猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

Django REST framework シリアライザの種類

ModelSerializer どのフィールドを含めるか ネストされたフィールドのシリアライズ フィールドの形式を指定する Readonly なフィールド HyperlinledModelSerializer ListSerializer BaseSerializer ModelSerializer JSON, XML など ↔︎ Django の model の変…

'OrderingFilter' object has no attribute 'filter_queryset' エラーの対処法

view で import している OrderingFilter のクラスが間違っている ダメな例 from django_filters.rest_framework import OrderingFilter from django_filters.filters import OrderingFilter 正解はこっち from rest_framework.filters import OrderingFilte…

Django REST framework Serializers

www.django-rest-framework.org Serializers Declaring Serializers(シリアライザを定義する) Serializing object(シリアライズする) Deserializing objects(デシリアライズする) Serializers Serializers は、Django の QuerySet や、モデルのインス…

これまで僕が仕事で使ったWebフレームワークと言語の特徴

これまで僕が業務で触ったことあるフレームワーク(と言語)は Laravel (PHP) Slim Framework (PHP) Django (Python) Gin (Go言語) で、どれも1年以上は保守しています。 長年業務で使ってきたこれらのフレームワークについて、実際使ってみてどうだったのか…

AWS ALB のヘルスチェックと Django の ALLOWED_HOSTS

はじめに ALLOWED_HOSTS との兼ね合い 対策 ALLOWED_HOSTS の意味 結局どうすればいいのか 事例を調査する 結論 はじめに 一般的に、 AWS で Web アプリケーションを動かすときは、 Application Load Balancer *1 と EC2 を利用します。 Application Load Ba…

Django 2.2 → 3.1 バージョンアップで MySQL may not allow unique CharFields to have a max_length > 255

Django を2.2 → 3.1 にバージョンアップしたら、以下の Warning が出るようになった。 test_app.Thumbnail.url: (mysql.W003) MySQL may not allow unique CharFields to have a max_length > 255. HINT: See: https://docs.djangoproject.com/en/3.1/ref/da…

Djang 2.2 -> 3.1 バージョンアップで module 'MySQLdb.constants.FIELD_TYPE' has no attribute 'JSON'

エラー内容と解決方法 Django 2.2 から Django 3.1 にアップグレードしたら以下のエラーが出るようになった。 (前略) File "/usr/local/lib/python3.6/site-packages/django/db/backends/mysql/introspection.py", line 27, in DatabaseIntrospection FIEL…

Django REST framework で UnorderedObjectListWarning

Django REST framework でこのようなエラーが出ることがありました。 UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered このエラーは、「オブジェクトの順序が定まっていない」というエラーです。 Django REST fra…

Django の runserver より gunicorn のほうが早くなるのか ApacheBench で検証

Django の runserver は遅い 皆さん開発時に Django の runserver というコマンドを使っていると思いますが、この runserver は本番環境では使えません。 DO NOT USE THIS SERVER IN A PRODUCTION SETTING. It has not gone through security audits or perf…

django-nose を使って django のテスト結果を XML で出力する

django-nose とは django-nose のインストール django-nose を Django に読み込ませて、XMLを出力させる INSTALLED_APPS TEST_RUNNER NOSE_ARGS 以上 django-nose とは Python で Web 開発をする時に Django フレームワークを使うことが多い CI 環境として C…

Djangoの「プロジェクト」と「アプリケーション」、INSTALLED_APPS【PythonでWebアプリ】

プロジェクトとアプリケーション アプリケーションの作成 INSTALLED_APPへの追加(重要) 今回の差分 参考 プロジェクトとアプリケーション Django には「プロジェクト」と「アプリケーション」の概念があり、 一つのプロジェクトの中に複数のアプリケーショ…

Python と Django で Web アプリを作って Docker で動かす: その1

はじめに なぜPythonを使うのか 環境 Django を入れる Django アプリケーションの作成 DockerでPythonの開発環境を作成する requirements.txt の用意 Dockerfile の作成 Docker のビルド docker-compose ディレクトリが同期されるように 続きは次回 はじめに…

Django REST framework のフィルタ(公式ドキュメントの日本語訳)

はじめに フィルタリング ログインユーザーを使ったフィルタリング URLによるフィルタリング Query parameter を使ったフィルタリング ジェネリックを使ったフィルタリング フィルタを設定する フィルタの注意点 get_queryset を上書き + FilterBackend REST…

2 - Requests and responses - Django REST framework ドキュメントの簡単日本語訳

原文 Tutorial 2: Requests and Responses Request objects Response objects Status codes Wrapping API views Pulling it all together Adding optional format suffixed to our URLs How's it looking Browsability What's next? 原文 2 - Requests and r…

Quickstart - Django REST framework の簡単な日本語訳

原文 Quickstart Project Setup Serializers Views URLs Pagination Settings Testing our API 原文 Quickstart - Django REST framework Quickstart ここでは、簡単なAPIを作成します。adminユーザーにだけユーザーとグループの閲覧と編集が可能なAPIを作成…

Home - Django REST framework の簡単な日本語訳

原文 Django REST framework Requirements Installation Example Quickstart Development Support Security 原文 Django REST Framework https://www.django-rest-framework.org/ Django REST framework Django REST framework は強力な Web API 開発のツー…

DjangoのクラスベースビューでSCRFトークンを無効化する

デバッグ時などにDjangoのクラスベースビューでCSRFトークンを一時的に無効化したいときの方法です。 例えばこういうAPIがあったとします。 from django.http import JsonResponse from django.http import HttpRequest from django.views import View class…