2015-12-15 99 views
0

我使用的是自定義的用戶模型,使用OneToOneField這種結構的用戶配置文件:Django的傳遞用戶配置文件數據從客戶端到服務器

email 
password 
profile : { 
    username 
    avatar 
} 

它適用於移動相當不錯,因爲我基本上只是發回JSON但這是一個問題,每當我在網站上使用我的API,因爲沒有辦法在html中發送類似json的數據,因此我無法在不使用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表單來完成。

任何想法我應該如何處理?

回答

0

如果我正確理解你的問題,你可能會發現Django rest框架對此很有用。

django rest框架具有可以處理json和表單數據並以相同驗證機制提供它們的視圖。它基本上使用Content-Type標題爲傳入數據選擇解析器(更多詳細信息here)。也許你可以看看他們做了什麼或者直接使用這個庫。

希望這會有所幫助。

+0

我已經在使用django rest框架。我將用我的序列化器更新我的問題,也許它會更清楚。 – soueuls

相關問題