我有一個 Django 專案,我需要將日期字串從前端發送到后端。在前端,我使用的是 javascript fetch 方法
async function getCustomerInDeliveryDate(deliveryDate : String) {
const response = await fetch('getCustomerInTripDate', {
method : 'POST',
headers : {
'Content-Type' : 'application/json',
},
body: JSON.stringify({
deliveryDate : deliveryDate
}),
});
return response
}
從 Django 后端,我目前實作了一個簡單的方法,該方法將字串回傳到前端
class GetCustomerInTripDate(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
print('Backend received call from front end!!!!!!!!!!!!!')
return JsonResponse({'data': ['hello', 'world']}, status = 200)
我嘗試發送到后端時收到的錯誤是
Forbidden (CSRF token missing or incorrect.): /staff/getCustomerInTripDate
我不確定如何發送 csrf 令牌。到目前為止我所做的研究都表明憑據應該設定為“同源”,我已經嘗試過,但仍然得到同樣的錯誤。
uj5u.com熱心網友回復:
您只需要添加{% csrf_token %}到模板中。
如果您使用的是普通的 HTML 表單,請將其放在表單中。
<form action="/your-name/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="Submit">
</form>
如果您使用的是 Ajax,則放置它的位置無關緊要,您只需將其添加到 POST 資料中即可
submitData = {
// other data
'csrfmiddlewaretoken': $("[name=csrfmiddlewaretoken]").val()
};
$.ajax({
method: 'post',
url: 'some_url',
data: submitData,
success: function(data){
// do things
},
error: function(event,xhr,settings,errorText){
// do error things
}
});
uj5u.com熱心網友回復:
CSRF 令牌默認存盤為 cookie。所以你應該用javascript檢索cookie,然后發送令牌。
或者你可以做一個安靜的端點。
uj5u.com熱心網友回復:
您得到的錯誤是 Cross Site Request Forgery( CSRF )
你在這里有詳細的解釋https://docs.djangoproject.com/en/4.1/ref/csrf/
長話短說,嘗試在 django 模板中添加 {% csrf_token %} 保護。
<form action="" method="post">
{% csrf_token %} <----- ADD THIS
......everything else goes here
</form>
或者,如果您不使用 django 模板,請嘗試將 csrf 裝飾器添加到您的視圖中。我認為應該是這樣的:
from django.utils.decorators import method_decorator<----- ADD THIS
@method_decorator(csrf_exempt, name='dispatch')<----- ADD THIS
class GetCustomerInTripDate(LoginRequiredMixin, View):
def post(self, request, *args, **kwargs):
print('Backend received call from front end!!!!!!!!!!!!!')
return JsonResponse({'data': ['hello', 'world']}, status = 200)
我認為這應該有效,希望它有所幫助。此致。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/507991.html
標籤:javascript django django-views 获取 API
下一篇:使用js的html表格
