Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Django将用户配置文件数据从客户端传递到服务器_Javascript_Json_Django_Django Profiles - Fatal编程技术网

Javascript Django将用户配置文件数据从客户端传递到服务器

Javascript Django将用户配置文件数据从客户端传递到服务器,javascript,json,django,django-profiles,Javascript,Json,Django,Django Profiles,我使用的是一个自定义用户模型,用户配置文件使用的是具有以下结构的OneToOneField: email password profile : { username avatar } 它对移动设备非常有效,因为我基本上只是来回发送json,但每当我在网站上使用API时都会遇到问题,因为在html中无法发送类似json的数据,因此如果不使用ajax,我无法填充“profile”字段 我希望能够使用简单的html表单,并且只在客户端验证和动画中使用javascript,而不是在注册

我使用的是一个自定义用户模型,用户配置文件使用的是具有以下结构的
OneToOneField

email
password
profile : {
    username
    avatar
}
它对移动设备非常有效,因为我基本上只是来回发送json,但每当我在网站上使用API时都会遇到问题,因为在html中无法发送类似json的数据,因此如果不使用ajax,我无法填充“profile”字段

我希望能够使用简单的html表单,并且只在客户端验证和动画中使用javascript,而不是在注册等批评功能中使用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
class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = ('username',)
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
class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = ('username',)
因此,无论我使用的是json还是表单数据,显然它都在等待配置文件(对象)数据。我想能够做到这一点,使用html格式


你知道我应该如何解决这个问题吗?

如果我正确理解了你的问题,你可能会发现Django rest框架在这方面很有用

django rest框架的视图可以处理json和表单数据,并在相同的验证机制中提供它们。它基本上使用内容类型头为传入数据选择解析器(更多详细信息)。也许你可以看看他们做了什么,或者直接使用图书馆


希望这能有所帮助。

也许您可以使用
表单解析器编写
ApiView


请参阅:

我已经在使用django rest框架。我将用我的序列化程序更新我的问题,也许它会更清楚。