画像遅延読み込みはこれ!「lazysizes.js」の使い方を徹底解説!
2022年10月26日水曜日
2022年10月12日水曜日
DjangoでBasic認証を設定する
まず、以下のサイトを参照して wsgi-basic-auth をインストールしました。(環境はAmazon Linux2、Apache)
【Django】DjangoアプリにBasic認証をかける
https://qiita.com/mizu4my/items/e8fb51d65f872f302537
まず、ライブラリをインストールします。
$ pip install wsgi-basic-auth
次に、.envファイルに、Basic認証のIDとパスワードを追加します、とありました。
.envファイルとは環境変数を保存するものというのは分かりますが、いったいどこに保存するものなのか書いてありません。
何回か検索して調べると、どうやら django-environ というライブラリを使うらしいことが分かりました。以下のサイトです。
Djangoで環境変数?ならdjango-environを使おうか。
https://qiita.com/moonwalkerpoday/items/9da47dda80d3ddac9a62
最終的には以下のようにしてできました。
wsgi.py(例)
import os
from wsgi_basic_auth import BasicAuth #追加
import environ #追加
env = environ.Env() #追加
env.read_env('/var/www/html/myproject/myproject/.env') #追加.envへのパスの例です。
application = get_wsgi_application()
application = BasicAuth(application) #追加
そして、Apacheの設定ファイル(httpd.conf等)には、WSGIPassAuthorization On を追加することも必要でした。
httpd.conf
WSGIPassAuthorization On #追加
以下を参考にさせていただきました。
WEBアプリケーション開発メモ
http://drunk.chips.jp/web/2021/04/django_basic.html
2022年10月7日金曜日
JavaScript: URLパラメータを連想配列にする
JavaScriptでURLパラメータを連想配列にするには、以下のようにするのが簡潔です。
1 2 | var urlSearchParams = new URLSearchParams(window.location.search); var params = Object.fromEntries(urlSearchParams.entries()); |
URLパラメータ: ?name=ABC&company=XYZ&address=Tokyo
⇒連想配列: {"name": "ABC", "company": "XYZ", "address": "Tokyo"}
参考: How can I get query string values in JavaScript?
https://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript
2022年10月6日木曜日
Django: urls.pyのnameをViewで取得する
urls.py で以下のようにnameを設定した場合、
1 2 3 | urlpatterns = [ path( 'search/' , views.Search.as_view(), name = "search" ), ] |
views.pyで以下のようにnameを取得できる。
1 2 3 | from django.urls import resolve URL_NAME = resolve(request.path_info).url_name |
2022年10月5日水曜日
Django: QuerySetに対するvalues()とvalues_list()の使い方と結果例
メモです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | # filter(id__in=[1266, 1267]) は all() に置き換えても同様 # モデルオブジェクト取得の基本形 Product.objects. filter (id__in = [ 1266 , 1267 ]) #結果: <QuerySet [<Product: PRD-0001A>, <Product: PRD-0002/0002M>]> # values() の使い方例 Product.objects. filter (id__in = [ 1266 , 1267 ]).values( 'id' , 'name' ) #結果: <QuerySet [{'id': 1266, 'name': 'PRD-0001A'}, {'id': 1267, 'name': 'PRD-0002/0002M'}]> #ValuesQuerySetと呼ばれるデータ型 # get()で一つのレコードだけ扱う場合 Product.objects. filter (id__in = [ 1266 , 1267 ]).get( id = 1266 ) #結果: <Product: PRD-0001A> Product.objects. filter (id__in = [ 1266 , 1267 ]).values( 'id' , 'name' ).get( id = 1266 ) #結果: {'id': 1266, 'name': 'PRD-0001A'} # values_list() の使い方 *タプルを返す Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'id' , 'name' ) #結果: <QuerySet [(1266, 'PRD-0001A'), (1267, 'PRD-0002/0002M')]> Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'id' , 'name' ).get( id = 1266 ) #結果: (1266, 'PRD-0001A') list (Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'id' , 'name' )) #結果: [(1266, 'PRD-0001A'), (1267, 'PRD-0002/0002M')] # get()で一つのレコードだけ扱う場合 Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' ).get( id = 1266 ) #結果: ('PRD-0001A',) Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' , flat = True ).get( id = 1266 ) #結果: 'PRD-0001A' # flat=True の例 *フィールドは一つだけ指定します。複数の場合エラーになります。 Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' ) #flat=True なし #結果: <QuerySet [('PRD-0001A',), ('PRD-0002/0002M',)]> Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' , flat = True ) #flat=Ture あり #結果: <QuerySet ['PRD-0001A', 'PRD-0002/0002M']> list (Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' )) #flat=True なし #結果: [('PRD-0001A',), ('PRD-0002/0002M',)] list (Product.objects. filter (id__in = [ 1266 , 1267 ]).values_list( 'name' , flat = True )) #flat=Ture あり #結果: ['PRD-0001A', 'PRD-0002/0002M'] # 外部キーも参照できる Product.objects. filter (id__in = [ 1266 , 1267 ]).values( 'id' , 'name' , 'category1__name' ) #結果: <QuerySet [{'id': 1266, 'name': 'PRD-0001A', 'category1__name': 'Wheel and axle'}, {'id': 1267, 'name': 'PRD-0002/0002M', 'category1__name': 'Pulley'}]> |