我正在使用具有此{{1>}结构的用户个人资料的自定义用户模型:
OneToOneField
它对移动设备非常有用,因为我基本上只是来回发送json,但每当我在网站上使用我的API时都会出现问题,因为html无法发送类似json的数据,因此我可以' t填写“个人资料”字段而不使用ajax。
我希望有可能使用普通的html表单并仅使用javascript进行客户端验证和动画,而不是将其用于评论功能,例如注册。
我也可以使用以下结构,然后为配置文件服务器端重建字典,但我觉得它不够通用。
email
password
profile : {
username
avatar
}
UserSerializer.py
email
password
username
avatar
ProfileSerializer.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
所以无论我使用的是json还是表单数据,显然它都在等待配置文件(对象)数据。我希望能够使用html表单。
知道我应该如何处理这个问题吗?
答案 0 :(得分:0)
如果我正确理解了您的问题,您可能会发现Django休息框架对此很有用。
django rest框架具有可以处理json和表单数据的Views,并以相同的验证机制提供它们。它基本上使用Content-Type标头为传入数据选择解析器(更多细节here)。也许您可以看看他们做了什么或直接使用图书馆。
希望这有帮助。
答案 1 :(得分:0)
也许你可以用ApiView
写一个FormParser
?
请参阅:http://www.django-rest-framework.org/api-guide/parsers/#formparser