【发布时间】:2019-07-06 05:43:00
【问题描述】:
我在我的django应用中写了一个views函数用于用户注册,代码如下:
def register(request):
if request.method == 'POST':
data1 = json.dumps(request.POST)
data = json.loads(data1)
full_name = data['userName']
company_name = data['agencyName']
phone = data['phoneNumber']
email_id = data['email']
password = data['password']
password2 = data['confirmpassword']
#Check if passwords match
if password == password2:
#Check username
if MyUser.objects.filter(email=email_id).exists():
messages.error(request,'That email is being used')
return redirect('register')
else:
#Looks good
user = MyUser.objects.create_user(password=password,
email=email_id, full_name=full_name,company_name=company_name,phone=phone)
user.save()
messages.success(request,'You are now registered')
return HttpResponse(json.dumps({'success':'success'}), content_type='application/json')
else:
messages.error(request,'Passwords donot match')
return HttpResponse(json.dumps({'error':'password donot match'}), content_type='application/json')
return HttpResponse(json.dumps({'none':'none'}),content_type='application/json')
reactjs 代码为:
class SignupForm extends Component {
constructor(props) {
super(props);
this.state = {
userName: null,
agencyName: null,
email: null,
password: null,
confirmpassword: null,
phoneNumber: null,
formErrors: {
userName: "",
agencyName: "",
email: "",
password: "",
confirmpassword:"",
phoneNumber :""
}
};
}
handleSubmit = e => {
e.preventDefault();
if (formValid(this.state)) {
fetch('https://localhost:8000/accounts/register', {
method: 'POST',
body: this.state,
headers:{
// 'Access-Control-Allow-Origin':'*',
'Content-Type':'application/json',
}
});
} else {
console.error("FORM INVALID - DISPLAY ERROR MESSAGE");
}
};
网站的前端是用 reactjs 制作的,当我尝试从 react 应用发送 POST 请求进行注册时,它没有注册用户。
此外,当我从邮递员向其发送发布请求以进行用户注册时,它可以正常工作并创建用户。但是,当我尝试从邮递员那里发送一个 json 对象时,像这样
{'userName':'abcdef','phoneNumber':'123456789',email='abc@xyz.com','password':'1234','confirmpassword':'1234','agencyName':'abbb'}
它显示以下错误:
KeyError at /accounts/register
'userName'
我应该如何解决这个问题?我可以通过哪些方式在 Django 中处理来自 react 应用程序的 POST 请求?
后端 django 应用也上传到 heroku 服务器,前端 react 应用使用上传到 heroku 的应用的 url。
【问题讨论】:
-
使用 django rest 进行 json 操作很容易
-
能否在您的 React 应用中包含创建 POST 请求的 js 代码?
-
添加了 reactjs 代码。
标签: python django reactjs django-views