diadia

興味があることをやってみる。自分のメモを残しておきます。

Django

django allauthの使い方

インストール pip install django-allauth https://django-allauth.readthedocs.io/en/latest/installation.html allauthの使い方イメージ allauthをインストールすると、urls.py, views.pyや各種テンプレートがインストールされる。INSTALLED_APPSにallauth…

DateFieldをカレンダーwidgetを使って入力したい

DateFieldにカレンダーwidgetを使う理由 期待された形式で入力されないデータはエラーが出てしまう。 カレンダー形式のウィジェットを使えば、上記の問題を避ける事ができる。 参考資料 https://simpleisbetterthancomplex.com/tutorial/2019/01/03/how-to-u…

geodjangoでポリゴンデータを表示したい

前提 モデルにポリゴンデータを格納済みで、views.pyで如何にして表示させるかを焦点とする。 資料: https://medium.com/@h4k1m0u/display-a-polygonized-raster-in-a-django-webapp-1-2-polygonize-a-raster-and-save-polygons-to-the-7779680a029e https:/…

電話番号に最適なDjangoのフィールドは何か

https://stackoverflow.com/questions/19130942/whats-the-best-way-to-store-phone-number-in-django-models どうやらライブラリがあり、それを利用するのが良いようだ。使い方を随時まとめておく。 https://github.com/stefanfoulis/django-phonenumber-fi…

エラー:form.is_valid()の結果が常にFalseになる場合

エラー原因に対する基本的な探索方法 form.is_valid()を実行したあとには、errorsアトリビュートを実行するか、formをfor構文で各要素をprintするとエラー原因を探る事ができる。 if form.is_valid() == False: for ele in form : print(ele) 今回のエラー内…

ある座標点からxkm以内に存在するデータオブジェクトをmapに表示したい

PostGISを使う場合はST_DWithin()関数を使えばよいだろう。 ではgeodjangoではどうやって特定の範囲内のデータオブジェクトを取得するか? psycopg2を使ってデータオブジェクトのみ取得することももやり方としてはできるだろう。 しかしここではgeodjangoの…

geodjangoの環境構築

https://docs.djangoproject.com/ja/2.2/ref/contrib/gis/install/ geodjangoを使うには、python,django,空間データベース、地理空間ライブラリが必要。 PostgreSQLで空間データベースを使うには、ライブラリであるGEOS,GDAL,PROJ.4,PostGISが必要である。 m…

再考:DetailViewの構造

DetailViewで詳細ページが表示できる理由 class ProductDetailView(DetailView): model = Product 上記の記述だけでhttprequestのGETが成立してしまうことをまず整理したい。 まずDetailViewはViewクラスを継承したものである。だからViewをカスタムしたもの…

UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list

以下の注意メッセージが表示される UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list:****** 解消方法 参考にしたところ:https://stackoverflow.com/questions/44033670/python-django-rest-framewor…

django:adminページでインスタンスを検索する

adminでインスタンスの検索が必要になるケース 例えば運用しているアプリケーションのインスタンスに誤りがあるとする。このインスタンスを修正するためにadminから修正することになっていたとする。 この場合アドミンからインスタンスを選択し、修正を行う…

デプロイ時にプロジェクトに必要なライブラリを漏れなくインストールする

結論:pip freezeを使う サーバーに必要なライブラリをインストールするために開発環境でpip freezeまたはpip listを使い確認しては、サーバーでライブラリをインストールしてきたが一気にインストールしてしまったほうが良い。 pip freeze > requirements.t…

django:PCとスマホで表示を変えたい

ユーザーのデバイスによって表示を変更したい 表示方法としてレスポンシブデザインが可能なBootstrapを利用してきた。しかしレスポンシブデザインでは納得いく表現ができなかった。 デバイスによって異なるテンプレートを使い分けれればより良くなると思われ…

django signalの情報を集める

signalの仕組みを理解するには2つのキーワードがある。senderとreceiverである。名前の通り、senderはsignalを送り出す役割を担う。receiverはそのsignalを受取り、何か挙動を起こす役割を持つ。receiverは関数またはインスタンスメソッドで無くてはならな…

django:sendgridでメール本文において&が&に変換されてしまう件について

状況 Checkクラスにはurlを格納する属性があり、一定時間ごとに各インスタンスurlを利用し、ウェブサイトにアクセスする。そして特定の情報が存在した場合にsendgridを使って自分のメールに送信する仕組みを設けた。メール本文にはアクセスしたurlを載せる。…

エラー:django.core.exceptions.ImproperlyConfigured: The included URLconf '***.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.

django.core.exceptions.ImproperlyConfigured: The included URLconf '***.urls' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import. djangoのエラーでa circul…

サーバーに画像を送信する

djangoのimagefieldはメディアのファイルパスを記録するだけとも言えるので、ファイルパスをフィールドに記録したらあとはメディアのディレクトリに画像を配置すればちゃんと表示される。 で今の段階はサーバーに画像を送信する段階だ。調べてみるとzipファ…

DRF ImageFieldのファイルパスを登録したい

DRFでImageFieldにデータを登録したい なんとなくだけどModelSerializerを使ってもimageFieldに登録できないような気がしてきた。その辺を調べてみる。 資料:https://www.django-rest-framework.org/api-guide/fields/#file-upload-fields なんかファイルや…

DRF JSONデータの成形

成形する必要性 django rest framework の場合request.POSTには注意事項がある。 それはキーに対する値が空(ブランク?null?)の項目はDRFはエラーを吐き出す。辞書型データに例えて説明すると、ex_dict["key1"]=""の要素を含むデータをrequests.POSTするとエ…

エラー:AssertionError: You cannot call `.save()` on a serializer with invalid data.

AssertionError: You cannot call `.save()` on a serializer with invalid data. 上記のエラーが表示された。 エラーが出た状況: インスタンスを生成することを目的にdjango rest apiでrequests.post()をする。するとdjango アプリケーションで上記のエラ…

django migration

makemigrations でpostgresql上にテーブルが作られるのか、またはmigrateでテーブルが作られるのか? 該当するドキュメント 疑問に思うテーマについてdjangoドキュメントがある。こちらを見てみる。 https://docs.djangoproject.com/ja/2.2/topics/migration…

django-allauthを使ってメールを送信を絡めてユーザ登録したい

前提 sendgridを使ったユーザー登録を実行 emailを送信するためにはsettings.pyをいじると送れることは知っておくこと。 ここの設定によってemailの送信を例えばgmailから送ったり、sendgridのようなメール配信サービスのAPIを利用して送ったり、またはメー…

sendgridに関わるメモ

メモ さくらVPSからsendgridを使うとお得。 https://vps-news.sakura.ad.jp/sendgrid1/ https://simpleit.rocks/python/django/adding-email-to-django-the-easiest-way/ 上記リンクについて補足 djangoのメール送信はsend_mailで送信できるが、sendgridを使…

gunicornをインストールしてサービス公開

http://torajirousan.hatenadiary.jp/entry/2019/04/22/181826 collectstaticを実行 サーバーに/usr/share/nginx/html/media,/usr/share/nginx/html/staticディレクトリがあることを確認してcollectstaticを実行する。 # ディレクトリがない場合以下を実行 $…

エラー: django.db.utils.ProgrammingError: syntax error at or near "WITH ORDINALITY" LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co...

エラー django.db.utils.ProgrammingError: syntax error at or near "WITH ORDINALITY" LINE 6: FROM unnest(c.conkey) WITH ORDINALITY co... 以上のエラーが発生した。 これはdjangoのmigrateコマンドを実行したときのエラーである。 環境 環境 ---------…

centos7 psycopg2のインストールエラー

sudo pip3.6 install psycopg2のエラー Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-70sqru_l/psycopg2/ 以上のようなエラーが出た。この問題には以下のように解決する。 https://ja.stackoverflow.com/questions/469…

centos7にdjangoをインストール

djangoのインストール pipを予めインストールしておくこと。 sudo pip install django==2.2 その他djangoに必要と思われるもののリスト # djangoで画像を表示させるアプリを作る時 pip install -y Pillow # django-allauthを使う時 pip install django-allau…

さくらVPSを使ってdjangoを公開する まとめ

さくらVPSにcentos7を入れる http://torajirousan.hatenadiary.jp/entry/2019/03/31/011303 centos7の初期設定 サーバーへ安全にssh接続できるような設定を行う。 http://torajirousan.hatenadiary.jp/entry/2019/04/22/172101 条件は以下の通り。 root以外…

sqlite:DBに格納されたテーブルデータを確認する方法

djangoでは開発時にsqlite3が使われる。このDBに直接接続し、データを入れてみようと思った。そのときにテーブル名が必要になる。どのような名前のテーブルか 参考文献:https://crimnut.hateblo.jp/entry/2018/04/17/172709 import sqlite3 con = sqlite3.c…

django-allauthのログインリンクのはり方

webアプリケーションのnavバーにログインリンクをはろうと試みた。 メモしておく。 試みたこと いつものようにapp_nameをアプリurls.pyで定め、app.urls.pyでnameを定める計画をする。しかしそもそもこれは自分が作ったアプリではない。てことで少し悩む事に…

django-allauth : テンプレートのカスタマイズ

django-allauthを使ってみた結果ユーザのログインページが味気ない感じだった。 ここを修正していこうと思う。 https://qiita.com/s-katsumata/items/b667c81a127223d2e868 こちらにテンプレートのカスタマイズ方法があった。これを参考にテンプレートをカス…