[英]How to send a POST request to the server from Fetch API? Examples don't work
I can't send a post request to the server.我无法向服务器发送发布请求。 For some reason, the reguest.POST on the server is empty.
由于某种原因,服务器上的 reguest.POST 是空的。 Below are code examples
下面是代码示例
JS on front JS在前面
let weekends = []
await fetch('{% url "get_weekends" %}', {
method: 'POST', headers: new Headers({'Accept': 'application/json', 'Content-Type': 'application/json'}),
params: {after: after_str, before: before_str}
}).then(function (response) {
return response.json();
}).then(function (data) {
if (data['status'] === 'ok') {
weekends = data['weekends']
} else {
console.error(data)
show_error('Не удалось получить список ваших выходных! Ошибка в статусе!')
}
}).catch(function (e) {
console.error(e)
show_error('Не удалось получить список ваших выходных! Не удалось выполнить запрос!')
});
after_str and before_str saved str data (01.12.2021 and 31.12.2021) after_str 和 before_str 保存了 str 数据(01.12.2021 和 31.12.2021)
Python on backend Python 在后端
def get_weekends_view(request):
""" Вью возвращает список выходных пользователя в заданном промежутке времени """
form = GetAfterAndBeforeForm(request.POST)
if form.is_valid():
after, before = form.cleaned_data['after'], form.cleaned_data['before']
result = []
for weekend in Weekend.objects.filter(user=request.user, date__range=(after, before)):
result.append({'date': weekend.date.strftime('%d.%m.%Y'), 'status': weekend.get_status_display()})
return {'status': 'ok', 'weekends': result}
else:
return {'status': 'error', 'msg': 'Форма заполнена не верно! ' + str(request.POST)}
forms forms
class GetAfterAndBeforeForm(forms.Form):
after = forms.DateField()
before = forms.DateField()
Try this:尝试这个:
await fetch('{% url "get_weekends" %}', {
method: "POST",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
params: JSON.stringify({ after: after_str, before: before_str }),
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.