Python 即使在传递CSRF_令牌之后,在Django Ajax中也会出现403禁止的错误
我使用模态弹出框在Django中创建模态实例。以下是模态体内部的形式:Python 即使在传递CSRF_令牌之后,在Django Ajax中也会出现403禁止的错误,python,django,ajax,Python,Django,Ajax,我使用模态弹出框在Django中创建模态实例。以下是模态体内部的形式: <form action="{% url 'projects:techs_create' %}" method="post" id="tech-form" > {% csrf_token %} <input type="text" name="name" id="tech-nam
<form
action="{% url 'projects:techs_create' %}"
method="post"
id="tech-form"
>
{% csrf_token %}
<input type="text" name="name" id="tech-name" />
<input type="submit" value="Save" class="button button-main" />
</form>
我得到这个错误:
POST http://localhost:8000/techs/new/ 403 (Forbidden)
我在SO中看到了一些类似的问题,大多数答案都是关于缺少的csrf
标记。现在我添加了它作为请求的数据。我仍然得到错误。我做错了什么
这是我用来处理请求的视图:
@login_required
def techs_create_view(request):
if not request.user.is_superuser:
raise PermissionDenied
if request.method == 'POST':
form = ProjectTechnologieForm(request.POST)
if form.is_valid():
name = form.cleaned_data.get('name')
form.save()
messages.success(request, f'{name} created successfully.')
return HttpResponseRedirect('projects:statistics')
form = ProjectTechnologieForm()
context = {
'tech_form': form
}
if request.is_ajax():
html = render_to_string('projects/statistics.html',
context, request=request)
return JsonResponse({'form': html})
谢谢想知道为什么定义了表单操作,然后又定义了提交事件吗?在Ajax中传递您的CSRF令牌,如
'csrfmiddlewaretoken':{{{CSRF\u token}}'
@login_required
def techs_create_view(request):
if not request.user.is_superuser:
raise PermissionDenied
if request.method == 'POST':
form = ProjectTechnologieForm(request.POST)
if form.is_valid():
name = form.cleaned_data.get('name')
form.save()
messages.success(request, f'{name} created successfully.')
return HttpResponseRedirect('projects:statistics')
form = ProjectTechnologieForm()
context = {
'tech_form': form
}
if request.is_ajax():
html = render_to_string('projects/statistics.html',
context, request=request)
return JsonResponse({'form': html})