[英]How to send POST request to Django API from ReactJS web app?
[英]How should a django app handle a post request from a reactjs form
我在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'
我該如何解決? 在React應用程序中,我可以通過哪些方式在Django中處理POST請求?
另外,后端django應用程序已上傳到heroku服務器上,而前端react應用程序正在使用heroku上載的應用程序的URL。
這兩行是胡說八道:
data1 = json.dumps(request.POST)
data = json.loads(data1)
將表單數據字典轉換為JSON然后再直接返回Python永遠不會有任何意義。
但是,您的問題是,您不是首先發送表單數據,而是發送JSON。 將這些行替換為:
data = json.loads(request.body)
如果POST請求與郵遞員一起正常工作,那么您從reactjs發送的JSON格式可能有問題。 控制台this.state並檢查它是否為正確的JSON格式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.