0

OneToOneFieldこの構造の を使用して、ユーザー プロファイルを持つカスタム User モデルを使用しています。

email
password
profile : {
    username
    avatar
}

基本的にjsonを送受信するだけなので、モバイルではかなりうまく機能しますが、htmlでjsonのようなデータを送信する方法がないため、WebサイトでAPIを使用しているときはいつでも問題になります。 ajaxを使用しない「プロファイル」フィールド。

プレーンな html フォームを使用し、登録などの批評機能には使用せずに、クライアントの検証とアニメーションにのみ JavaScript を使用する可能性があることを望みます。

次の構造を使用して、プロファイル サーバー側の辞書を再構築することもできますが、十分に一般的ではないと感じています。

email
password
username
avatar

UserSerializer.py

class UserSerializer(serializers.ModelSerializer):
    password = serializers.CharField(write_only=True)
    profile = ProfileSerializer(required=True)

    class Meta:
        model = get_user_model()
        fields = ('id', 'email', 'password', 'date_joined', 'profile')

    def create(self, validated_data):
        #profile_data = validated_data.pop('profile')
        password = validated_data.pop('password')
        user = get_user_model().objects.create_user(**validated_data)
        user.set_password(password)
        #user.save()
        print(user)
        #print(profile_data

ProfileSerializer.py

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = ('username',)

したがって、json とフォーム データのどちらを使用していても、プロファイル (オブジェクト) データを待っていることは明らかです。HTML形式でできるようにしたいです。

これにどのようにアプローチすべきか考えていますか?

4

2 に答える 2

0

私があなたの問題を正しく理解していれば、これには Django rest フレームワークが役立つかもしれません。

django rest フレームワークには、json とフォーム データの両方を処理し、それらを同じ検証メカニズムでフィードできるビューがあります。基本的に Content-Type ヘッダーを使用して、受信データのパーサーを選択します (詳細はこちら)。たぶん、彼らが何をしたかを見たり、ライブラリを直接使用したりするかもしれません。

お役に立てれば。

于 2015-12-15T15:02:40.377 に答える