【发布时间】:2016-01-10 05:53:00
【问题描述】:
我在 Django 中创建新用户,但是当我尝试使用现有电子邮件添加用户时,我得到 400 状态和
{
"email": ["This field must be unique."]
}
并在控制台中得到了这个: 我将此配置用于 Angular 和 Django
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
}]);
app.config(function ($httpProvider) {
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
});
这就是我尝试在 POST 上处理此错误的方式
var users = Restangular.all('users');
users.post({
email: $scope.email,
first_name: $scope.firstname,
last_name: $scope.lastname,
phone: $scope.phone,
password: $scope.password
}).then(function(response){
console.log(response);
alert("done");
},function(response) {
console.log("Error with status code", response.status);
});
版本:
Django==1.8.4
djangorestframework==3.2.4
"angular": "1.4.7",
"restangular": "1.5.1"
有什么想法吗? 更新 模型序列化器:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = PUser
def create(self, validated_data):
user = PUser(
email=validated_data['email'],
first_name=validated_data['first_name'],
last_name=validated_data['last_name'],
phone=validated_data['phone']
)
user.set_password(validated_data['password'])
user.save()
return user
PUser 模型是 Django AbstractUser 的副本,但没有用户名和电子邮件是必需的并且是唯一的
【问题讨论】:
-
请发布您的序列化程序。
-
您要更新现有用户吗?
POST用于创建,而不是更新。错误是User的 Django 模型定义中的数据库约束。不能有 2 个用户使用相同的电子邮件地址。 -
用模型更新了帖子。我正在创建新用户并且一切正常,但是当电子邮件已经使用时我需要处理错误
-
建议您在尝试插入并返回更有意义的响应之前进行检查
-
仅通过检查打印屏幕 - 您是否在 index.html 的脚本部分的开头包含了 lodash?
标签: angularjs django python-3.x django-rest-framework restangular