Django REST framewrok で 'NoneType' object has no attribute '_meta' serializer エラー
結論から言いますと、 serializers でのユーザーのインポート方法に問題があったようです。
カスタムユーザーを作成して、下記の通りユーザークラスを呼び出して 使用していました。
from django.contrib.auth.models import User class UserSerializer(serializers.ModelSerializer): class Meta: model = User
下記の通り修正すると正しく動作するようになりました。
from django.contrib.auth import get_user_model class UserSerializer(serializers.ModelSerializer): class Meta: model = get_user_model()
Django REST framewrok の環境構築
Windows 端末での Django REST framewrok の
環境構築について説明します。
仮想環境の作成
まず、Python の仮想環境を作成します。
一番手っ取り早いのは anaconda navigator を使用する方法です。
下記サイトから anaconda navigator をインストールします。
インストールが完了したら、Environments の Create ボタンを押下、
ダイアグが表示されますので、環境名を入力して、Python のバージョンを指定したら Create ボタンを押下します。
これで、仮想環境の作成は完了です。
次に、IDEから仮想環境に接続する設定方法を見てみましょう。
Visual Studio Code を使用する
まず、先ほど作成した仮想環境のパスを確認します。
ターミナルで下記のコマンドを打つと、
仮想環境の一覧とそのパスが表示されます。
conda env list
次に、Ctrl+Shift+P でコマンドパレットを表示してください。
コマンドパレットにsettings.jsonと入力すると選択肢が表示されますので、
Open Workspace setting (JSON) を選択します。
settings.json が開きますので、先ほど取得したパスを下記のように入力して保存します。 バックスラッシュを2重にする点を注意してください。
{ "python.pythonPath": "取得したパス\\python.exe" }
もしターミナルの種類がPowerShellになっている場合は
Command Promptに変更します。
行の先頭が(仮想環境名)となっていれば、
既に仮想環境に接続された状態となっています。
最後にDjango と djangorestframework をインストールします。
pip install Django pip install djangorestframework
下記のコマンドでサーバーが起動します。
python manage.py runserver
TypeScript の keyof
TypeScript では keyof でオブジェクトの
キーを取り出すことが出来る。
keyof のサンプルコード
type KEYS = { primary: string, secondary: string, tertiary: string } let key: keyof KEYS; key = "primary" const COUNTRIES = { primary: "USA", secondary: "India", tertiary: "China" }; let keyCountry: keyof typeof COUNTRIES; keyCountry = "primary"
TypeScript の typeof
TypeScript では typeof を使用して、
型を流用できる。
typeof のサンプルコード
let profile1 = { name: "Mike", age: 24 }; let profile2: typeof profile1 = { name: "Ken", age: 22 }
TypeScript で Literal Types
TypeScript では Literal Types を使用して、
指定した値しか代入できないようにすることが出来る。
Literal Types のサンプルコード
let country: "USA" | "China" | "India"; country = "USA";