自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

  • DjangoMessageFrameworkにJavaScriptとCSSを当てる【ボタンを押して消せるようにする】

    DjangoMessageFrameworkは投稿完了した旨やエラーの理由をクライアント側に表示することができるが、表示させっぱなしになるので少々鬱陶しく感じることもある。 そこで5秒経ったら自動的に消すように仕立てたり、バツボタンを押して消せるように仕立てた。 さらに、fontawesomeを使用している。 ソースコード テンプレート <div class="notify_message_area"> {% for message in messages %} <div class="notify_message notify_message_{{ message.tags }}"> <div class="notify_message_content">{{ message }}</div> <div class="notify_message_delete"><i class="fas fa-times"></i></div> </div> {% endfor %} </div> JavaScript(jQuery) //Django ...
  • 【Django】Stripeでサブスクリプション決済を行う

    1回限りの決済を行いたい場合は、下記。 【Stripe】Djangoにクレジットカード決済機能を実装させる 対象読者は、カスタムユーザーモデルとDjangoのデフォルトの認証機能を実装済みとする。 【Django】デフォルトの認証機能を網羅し、カスタムユーザーモデルとメール認証も実装させる【脱allauth】 Stripeにてサブスクリプション商品を作る まず、Stripeにてサブスクリプション商品を作る。 ...
  • 【django】summernoteを使用してwysiwygエディタを表示させる【マークダウンよりも簡単】

    wysiwygエディタとは? このようなエディタのことである。 入力した内容と、ページに表示される内容が全く同一。 MSwordのようなエディタをウェブ上で扱うことができる。(.docxファイルがウェブ上で扱えるわけではないので注意。) 今回も40分DjangoをベースとしてDjango-summernoteを実装していく。 Djangoでwysiwygエディタを使うならdjango−summernote 以 ...
  • 【Django】管理サイトで任意のJavaScript、CSSを発動させる【管理サイトのカスタム】

    前提 前もって、プロジェクト直下のtemplatesが作られており、settings.pyのTEMPLATESでもそれが読まれている状況であるとする。 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ BASE_DIR / "templates" ], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] 作業 templatesの中にadminディレクトリを作る。 mkdir templates/admin/ templates/admin/base.htmlを作る。内容は下記。 {% extends 'admin/base.html' %} {% block extrastyle %}{{ block.super }} <style> body{ background:orange; } </style> <script>console.log("test;");</script> {% endblock %} これで管理サイトの全ページでC ...
  • 【Django】GitとSSHを使ってUbuntuへデプロイする(virtualenvでPythonライブラリの管理)【hookでmigrateコマンドも】

    要求される知識が非常に多いため、下記対象読者に該当する方のみ、閲覧を推奨します。 対象読者 Linuxのコマンドがわかる CUIエディタ(nanoもしくはvim)が扱える すでにDjangoプロジェクトをUbuntuへデプロイをしたことがある gitを使ったことがある(ステージング→コミット→プッシュができればOK) SSHでUbuntuへリモートログインをしたことがある(パスワード認証ができればOK) vir ...
  • 【Laravel】GitHubからダウンロードしたプロジェクトを動作させるには?

    GitHubにプッシュされているLaravelプロジェクトをDLして動かすには別途手順を踏む必要がある。 前提 Ubuntuを使用している場合、必要なPHPパッケージが既にインストールされているかをチェックする sudo apt install -y php8.1-cli php8.1-common php8.1-mysql php8.1-zip php8.1-gd php8.1-mbstring php8.1-curl php8.1-xml php8.1-bcmath php8.1-sqlite3 もし、これでパッケージが見つからないと表示される場合は、リポジトリの追加がされていない状況である。 下記コマンドを実行して、再度↑のコマンドを実行する。 sudo apt-add-repository ppa:ondrej/php GitHu ...
  • 【Django】createメソッドを使用して、新規作成する【バリデーションしない点に注意】

    .create()を使うことで手軽に新規作成ができる。 Model.objects.create() 40分Djangoを元に組むとこうなる。 from django.shortcuts import render,redirect from django.views import View from .models import Topic class IndexView(View): def get(self, request, *args, **kwargs): # .create()を使うことで.save()を使わなくても新規作成ができる。返り値は新規作成したモデルオブジェクト topic = Topic.objects.create(comment="これはテストです。") print(topic) # バリデーションまではされない点に注意。 topic ...
  • 【Python】def関数のアロー(->)はアノテーション

    例えば、以下の関数があったとする。 def test(name:str) -> str: return name print( test("taro") ) print( test(12) ) これは文字列を受け取って文字列を返す関数である。 ただし、上記のように文字列型ではない型を受け取っても正常に動作はする。 あくまでも注釈として利用することができる。関数の機能自体に影響はない。 参照元 https://docs.python.org/ja/3.6/library/typing.html https://magazine.techacademy.jp/magazine/46675 https://program-shoshinsya.hatenablog.com/entry/2020/09/09/230633 ...
  • 【Selenium】webdriver-managerを使ってPythonコードからChromeドライバーをインストールする

    前もってwebdriver-managerをインストールしておく。 pip install webdriver-manager 下記コードでChromeドライバーが簡単にインストールできる。 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(service=Service(ChromeDriverManager().install())) driver.get("https://www.google.com/") どうやらvirtualenvではなくOSに直インストールされるようだ。 ...
  • 【Django】DurationFieldのフォームの最適解を考えてみる【JSを使うか、Django側で制御するか】

    勉強した時間やトレーニングした時間を入力することができる、DjangoのDurationField。 これは、日付や日時の入力とは異なるため、flatpickrは通用しない。 そのため別途フォームの作成を考慮する必要がある。 普通のinputタグtype=“text"のフォーム これでは:を入力しないといけないので、入力がめんどくさい。 selectタグを使ったフォームに書き換える。 そ ...