くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

Django

Django+Cloud Run+Cloud SQL(MySQL)+Cloud Build

最近、CloudRunとCloudBuildをよく使うので、 Django+CloudSQLも簡単とできるだろ〜と思ったら、 大ハマリしたときの備忘録。 CloudSQL(MySQL)だとライブラリが対応してなくてハマるっぽい。。(´・ω・`) 基本的な流れは公式ドキュメントを参照。 ・Cloud Ru…

DRFのページネーションクラスで今のpageとかを返すよう拡張する

DRFのPageNumberPaginationを使ってると、 今のページ数(page)やページあたりの数(per_page)とかもほしくなる。 ドキュメントとかを見てると、カスタマイズで追加できるよ!と書いてあったので、 いろいろ試してみたときの備忘録。 ・Custom pagination styl…

Django REST Frameworkで返却時だけ表示を変更する(to_representation)

DRFで一部表示を変えるために、serializerを拡張するのめんどくさいなと思ってたら、 良い方法がドキュメントに書いてあったので、その時の備忘録。 ・Advanced serializer usage | Overriding serialization and deserialization behavior こんな感じでSeri…

DjangoでRead OnlyなModelAdmin

DjangoのAdmin Siteで特定のModelで参照だけしたいときがあったので、 いろいろ調べてみたときの備忘録。 ReadOnlyAdmin こんな感じで、全部OFF or 処理を空にすればよさそう。 from django.contrib import admin class ReadOnlyAdmin(admin.ModelAdmin): de…

GAE+Cloud SQLでDjangoを動かしてみる

DjangoをGAE+Cloud SQL環境で動かしてみたときの備忘録。 基本は、GAEのドキュメントに従えばOK。 注意点/ハマったところ Cloud SQLをローカルでつなぐ時はプロキシツールを実行しておかないといけない settings.pyに習って、各種設定が必要 ファイルは書き…

DjangoでAPI(DRF)でパスワードを忘れたときの処理

Django Rest Frameworkを利用してるときに、 パスワードリセットをAPIでできるようにしたときの備忘録。 django-rest-passwordresetを使うと簡単にできる。 各APIの画面も生成してくれるので、ブラウザでアクセスすると確認できる。 インストール $ pip inst…

Djangoのモデルでフィールド名を取得する

DjangoのModelを定義するけど、フィールド名を取得したいなと思ったときの備忘録。 <Model>._meta.fiedlsでフィールド名が取得できるらしい 使い方 from django.db import models class Group(models.Model): name = models.CharField(max_length=200) class Member</model>…

Djangoでシグナルを受け取ってみる

Djangoでは、特定のイベントが発生したときに、何らかの処理ができるような仕組み(Signals))がある。 たとえば、モデルを保存したり、削除したときになにか処理させるとか。 サンプル こちらの記事の登録完了メールの例を引用。(すごくわかりやすい。。) ユ…

Django admin siteにあるlistで外部参照を詳細ページへのリンクにする

Djangoのadmin siteで管理画面を作る際、一覧表示している項目がForeignKeyの場合、 その詳細にアクセスできるようになるといいなと思ったら、すでにあったときの備忘録。 Django Admin relation linksを使うと簡単にできる インストール $ pip install djan…

DjangoのRestAPIでsnake_caseをcamelCaseに自動変換

Django+DRFとNuxtで開発するときに、 snake_caseで書いてcamelCaseで受け渡ししたいなと思ったときに調べたときの備忘録 djangorestframework-camel-caseを使うと簡単にできた。 インストール $ pip install djangorestframework-camel-case setting.pyの変…

DjangoのrunserverをHTTPSで起動する(django-extensionsでRunServerPlus)

Djangoの開発サーバをHTTPSで起動したいなと思ったら、 django-extensionsのRunServerPlusでできるよう。 簡単にできたので、その時の備忘録。 インストール まずはインストール $ pip install django-extensions # RunServerPlusを使うためのライブラリ $ p…

Djangoのmanage.pyでDBデータのダンプ/ロードする

DjangoでDBデータを扱うときの備忘録。よく使うけど、忘れるので。 DBのデータをダンプする # 全テーブル出力 $ python manage.py dumpdata --indent 2 --format json # モジュールの全テーブル出力 $ python manage.py dumpdata <mymodule> --indent 2 # 特定のテーブ</mymodule>…

Django REST Framework+SwaggerでAPIドキュメント自動生成

Django REST FrameworkにSwaggerを簡単に入れれるらしいので試してみたときの備忘録。 インストール とりあえず、pipでインストール $ pip install django-rest-swagger あわせて、settings.pyにも追加&設定 INSTALLED_APPS = ( ... 'rest_framework', 'res…

Django Admin Siteが便利すぎてつらい

admin-site便利。 以下、公式サイトより。 Djangoのパワフルな特徴の1つは、自動的に生成されるadminインタフェースです。あなたのモデルクラスからメタデータを読み取り、モデル中心のインタフェースを提供します。このインタフェースのおかげで、ユーザは…

Windows10のWSLで、Python3+Djangoしたい

やっと、Windows10のWSLを触るように。。Python環境を整えてた時の備忘録。 やったこと $ python -V # => Python 3.6.5 $ pip -V # => pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6) $ virtualenv --version # => 16.0.0 1. pipのインストー…

DjangoでRESTfulなAPIしてみた

DjangoでREST APIを簡単に作れるフレームワーク(djangorestframework)を使ってみた。 サクッと作れるので、いい感じ! インストール とりあえず、pipでインストール $ pip install django djangorestframework インストールしてたら、rest_frameworkを追加 I…

Django+REST+JWTでWebAPIを簡単認証

Django REST Frameworkを使って、WebAPIの認証をJWTにしたとき備忘録。 インストール $ pip install django djangorestframework djangorestframework-jwt 全体の設定 settings.pyに設定を追加 REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_fr…

Djangoプロジェクトではじめにやること:ディレクトリ構成編

個人的な備忘録。ひさびさにDjangoプロジェクトを最初から作ると忘れる。。 virtualenvの用意 $ mkvirtualenv --no-site-package sample_project プロジェクトの作成 $ python pip install django $ django-admin startproject sample_project settingsを分…

【小ネタ】Djangoでメール送信

Djangoでメールを送るときの備忘録。 よく使うけど、よく忘れるので。。 from django.core.mail import send_mail send_mail( 'Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False, ) メールのバックエン…

Amazon Linux2+Apache+virtualenv+python3+Djangoでアプリをデプロイ

Amazon Linux2がリリース版になってから、Djangoアプリをデプロイしたので、 その時の備忘録φ(..)メモメモ 特に、python3のインストールがつらかった。。 各種バージョンは以下の感じ $ cat /etc/system-release Amazon Linux 2 $ httpd -v Server version: …

supervisorでデーモン化する

Djangoのbackground tasksをデーモン化したいなーと思ったので、その際の備忘録。 supervisorとは Python製のデーモン化ツール Supervisor: A Process Control System — Supervisor 3.3.3 documentation インストール $ sudo yum install supervisor $ sudo …

Djangoでログをカスタマイズして、レスポンス時の詳細をロギングする

Djangoを利用している際に、標準のロギングだとリクエスト時のパラメタが表示されない。。 POSTだとURLしか確認できないため、拡張してみたときの備忘録。 リクエスト/レスポンスに関する拡張ポイント Djangoでは、色々と拡張ポイントが用意されているらしく…

Django/PythonでCSVファイルをアップロード(.csv)したり、ダウンロード(.csv)したり、ダウンロード(.zip)したりする方法

Django/Pytonを使ってCSVファイルをあれこれするために、いろいろ調べたので、その際の備忘録。 環境はDjango1.10.1とPython2.7 CSVファイルの扱いは、基本的にimport csvのパッケージ okadateさんのQiita記事にあるとおり、PythonでのCSVファイルの操作は以…

Django x jQuery x Ajaxで非同期にファイルをアップロードしてサーバ側で処理をする

前に記事で書いた処理のファイルバージョン。 wannabe-jellyfish.hatenablog.com 見た目的にはこんな感じ。 HTML側 <form id="form" class="form" action="upload_file" method="post" enctype="multipart/form-data"> {% csrf_token %} <div class="input-group"> <input type="text" class="form-control" readonly=""> </div></form>

DjangoのMyチートシート(随時更新予定)

Djangoでよく調べなおすので、個人的なチートシート Model リレーション ref: 【django】多対多の (many-to-many) リレーション - metabo346の日記 クエリー ref: クエリーセットのfilterメソッド - at_yasuの日記もといメモ書き ref: Django の order_by の…

TimezoneをJSTにしてcronの実行をいい感じにする

cronで定期実行をしようとおもったら、サーバのタイムゾーンがJSTになってなかった。。。 その際の備忘録φ(..)メモメモ 設定方法 # タイムゾーンを変更 $ ln -sf /usr/share/zoneinfo/Asia/Tokyo /etc/localtime # crondを再起動して設定を反映 $ service cr…

Djangoでログ/ロガーの設定(logging)

Djangoを使ってWebサービスを作っているときに、ロガーを導入したときの備忘録。 環境は、Django1.10.1, Python2.7。 Qiitaにsakamossanさんのすてきな記事があったので、ほぼ流用 setting.pyにloggerの設定を書く LOGGING = { 'version': 1, # これを設定し…

DjangoでBatch処理(カスタムコマンド)

Djangoを使ったWebサービスを作っている際に、バッチ処理が必要になったので、その際の備忘録。 環境は、Django1.10.1とPython2.7 Djangoの機能を利用したバッチを作るならカスタムコマンド いろいろ調べてみたところ、Djangoの機能を使いつつ、バッチ処理を…

(Django小ネタ) Templateのforでたくさん固定回数繰り返す方法

最近、Djangoのお仕事をいただけるので、そのときの備忘録 templateで固定回数のループしたいときの小ネタ。 以下のような感じに感じにすると、100回繰り返せる。 {% for file_id in ""|rjust:"100" %} (繰り返したいなにか) {% endfor %} 参考にしたサイト…

Python+Djangoのはじめかた on Cygwin + Windows10

ひょんなことから、Python+DjangoでWebアプリを開発することになったので、φ(..)メモメモ 環境はWindows10 64bit + Cygwin 64bit + vim 7.4 Pythonとかについて もともとJavaな人なので、Pythonについていろいろ調べた 言語的なあれこれ 動的プログラミング…