2015-12-15 69 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

相关问题