settings.pyDRF(django-rest-framework)とTokenAuthenticationでは、jsonフィールドをトークンに自動的に埋め込む方法は?
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
),
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.AllowAny',
),
}
serializers.py
class UserSerializer(serializers.ModelSerializer):
related_postwriter = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = User
fields = ('id', 'username', 'email', 'related_postwriter')
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('id', 'created_date', 'author', 'text', 'image')
def create(self, validated_data):
validated_data['author'] = self.context['request'].user
return super(PostSerializer, self).create(validated_data)
models.py
class Post(models.Model):
author = models.ForeignKey(User, related_name='related_postwriter')
text = models.TextField(blank = False)
image = models.ImageField(null = False, blank = False, upload_to='images')
created_date = models.DateTimeField(
default=timezone.now
)
def __str__(self): # __unicode__ on Python 2
return self.text
views.py
jsonリクエストとjsonレスポンスのために、このRESTful APIを作成する必要がありました。 このRESTful APIをAndroidアプリケーションに使用すると、ログインしてRESTful APIからトークンを取得し、そのトークンを使用してデータをRESTful APIにヘッダーで送信します。郵便配達キャプチャとして
、
私は、 "著者" 記入する必要があります。ボディの "番号"。この数字は、ユーザーが自分のRESTful APIに注文を登録していることを意味します。上のキャプチャから、その作者は私のRESTful APIの最初のユーザーです。
私は著者フィールドが空作られている場合、それは
{
"author": [
"This field is required."
]
}
を返さどのように私は、自動的にトークン(またはトークンを使用していない他の方法)を使用した「著者」の部分を埋めることができますか?
jsonの応答
"author":"some alphabet name readable"
はどうすれば取得できますか?"author":"1 or 2 like number"
はキャプチャしません。私は"author":"stackoverflowman"
のようなフォームが欲しいです。
おかげで、あなたの答えとして、それは '「author」を返します。 "ユーザー名": "ghdalsrn"、 "電子メール": ""、 "related_postwriter":[ 1、 2、] 'それは非常にうまく動作しますが、私はただ一つのフィールドを返すことにしたい場合は、[はい、 '' username ''フィールド、どうすればいいですか? –
編集を確認してください。@ H.fate – arcegk
素敵な答えをありがとうございます。 –