我有一个页面,在该页面中,我呈现datatables以显示数据,并使用每行编辑和删除按钮,我还有一个全局按钮以创建新条目。“创建”按钮打开一个模式窗体,它是标准引导模型。 我使用相同的表单创建&;更新记录。因此如果刷新我的页面&;创建一个新条目,它可以工作,但在单击“编辑”按钮时不刷新,然后提交模式表单,它会给我此错误
CSRF verification failed. Request aborted.
所有这些操作都是使用AJAX请求执行的,因此我不会在每次请求后重新加载页面。我如何解决这个问题? 这是我的服务器端代码你想看一下
class CategoryView(AdminLoginRequiredMixin,View):
def post(self, request):
form = DownloadableCategoryForm(request.POST)
if not form.is_valid():
return JsonResponseBuilder.validation_error(form.errors)
form.save()
return JsonResponseBuilder.success('Category created succesfully...')
# to update category
def put(self, request):
try:
category = DownloadableCategory.objects.get(pk=request.POST.get('id'))
except DownloadableCategory.DoesNotExist:
return JsonResponseBuilder.error('Category not found!', HTTPStatus.NOT_FOUND.value)
form = DownloadableCategoryForm(request.POST,instance=category)
if not form.is_valid():
return JsonResponseBuilder.validation_error(form.errors)
form.save()
return JsonResponseBuilder.success('Category updated succesfully...')
这是我用来创建/更新记录的JS代码
$.ajax({
url: "{% url 'admin:create_downloadable_category' %}",
method: id.length == 0 ? "POST" : "PUT",
data: new FormData(form[0]),
processData: false,
contentType: false,
beforeSend: function () {
$('.pre-loader-screen').fadeIn(200);
},
error: function (err) {
console.log(err);
error = JSON.parse(err.responseText)
swal(
{
title: "Error!",
text: error['message'] || 'Internal Server Error!',
type: "error",
showCancelButton: true,
closeOnConfirm: true,
})
},
success: function (response) {
categoryModal.modal('hide')
$('.pre-loader-screen').fadeOut(200);
reloadDatatable()
toastr.success(response.message);
}
});
编辑:我知道更新方法不起作用,即使我刷新页面&;尝试更新记录。它只给了我403个错误
您应该从服务器呈现模式内容。当用户单击模态来创建/更新对象时,您必须为更新的模态内容触发AJAX调用并更新模态内容
您应该创建一个AJAX视图,它为您提供一个模式内容
相关问题 更多 >
编程相关推荐