自動化無しに生活無し

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

  • 【Django】EC2インスタンスへgitを使ってデプロイする

    scpによるファイルアップロードの場合、ローカルで削除した差分ファイルがインスタンス上に取り残されてしまう。 可能であれば、gitを使ったデプロイができるようになっておきたい。 手順 インスタンスにリモートリポジトリを作る ローカルにリポジトリを作る リモートリポジトリとローカルリポジトリをつなげる SSHの設定に.pemファイルを登録する プッシュする インスタンスにリモートリポジトリを作る インスタンスのデフォ ...
  • Django-summernoteでアップロード上限を設定する

    デフォルトで、Django-summernoteにアップロードできるファイルサイズには上限が設定されている。 こちらで上限を開放できる UPLOAD_SIZE = 200 * 1000 * 1000 SUMMERNOTE_CONFIG = { 'attachment_filesize_limit': UPLOAD_SIZE, 'summernote': { 'width': '100%', 'height': '480', } } 参照: https://stackoverflow.com/questions/74588821/how-to-change-file-upload-size-limit-django-summernote ...
  • Django Summernoteを使ったブログで、本文の画像を記事のサムネイルにするには【BeautifulSoup使用】

    Django-summernoteを使ったブログサイトを作るとき。 ブログの記事の一覧表示にはサムネイルの表示が必要になる。 しかし、記事にサムネイル専用のフィールドを割り当ててしまうと、本文の画像とかぶってしまう(サムネイル用の画像を指定した後、記事にも同じ画像を貼り付けるという二度手間) そこで、記事の一番最初に指定された画像をサムネイルとして使えるよう、モデルメソッドを作った。 BeautifulS ...
  • 【Django】2次元配列をCSVファイルとしてダウロードできるようにする【HttpResponse】

    • 作成日時:
    • 最終更新日時:
    • Categories: サーバーサイド
    • Tags: django
    from django.views import View from django.http import HttpResponse import csv class DownloadView(View): def get(self, request, *args, **kwargs): data = [ [ 10,20,30 ], [ 10,20,30 ], [ 10,20,30 ], ] # レスポンスとして返すCSVファイル名 file_name = 'data.csv' # HttpResponseを使ってCSVのデータを書き込む response = HttpResponse(content_type='text/csv') # ファイル名を指定 response['Content-Disposition'] = f"attachment; filename={file_name}" # HttpResponseにCSVファイルデータを書き込む writer = csv.writer(response) writer.writerows(data) return response download = DownloadView.as_view() HttpResponseはこのようにcsv.writer()の引数に指定することができる。 これにより、配列のデータをそのままCSV ...
  • poetryなしでDjangoをRender.comへデプロイする【Herokuの代替クラウド、アカウント作成から解説】

    2022年11月28日、Herokuのサービスが完全無料で利用できなくなった。 そこで、代替のクラウドクラウドサービスとして最有力候補のRender.comを使用する。 90日間しかDBは持たないとは言え、就活用のポートフォリオとしてウェブアプリを公開するには十分かと思われる。 本記事では、DjangoをRender.comへデプロイする方法を解説する。 Render.comの基本情報 箇条書きで並べる。最 ...
  • Djangoでfullcalendar.jsを使いTodoアプリを作る

    fullcalendar.jsを早速実践運用してみた。 まだまだ足りない箇所は有るかもしれないが、ここから徐々に発展させ、ゆくゆくはReactと組み合わせてSPAを作りたいところだ。 詳細はソースコードを見ていただきたい。これまでのDjangoとほとんど変わりはないので、記事内ではfullcalendar.jsの部分だけまとめる。 テンプレート index.html {% load static %} <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>To ...
  • 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 ...