0
將django-jquery-file-upload集成到我的Django項目中。立即上傳並查看列表工作。但不能刪除該文件。403禁止在django項目中刪除文件
詳細說明:
該文件是在/ opt /數據/ myproject的/上傳/圖片
權限:
drwxrwxrwx 2守護程序守護程序39年06月10張15:50圖片
class FileListView(ListView):
model = Picture
def render_to_response(self, context, **response_kwargs):
files = [ serialize(p) for p in self.get_queryset() ]
data = {'files': files}
response = JSONResponse(data, mimetype=response_mimetype(self.request))
response['Content-Disposition'] = 'inline; filename=files.json'
return response
picture_form.html的一部分:
<form id="fileupload" method="post" action="." enctype="multipart/form-data">{% csrf_token %}
setting.py
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'lib.middleware.SessionTimeout',
'django.middleware.csrf.CsrfViewMiddleware',
#'django.middleware.csrf.CsrfResponseMiddleware',
#'django.middleware.security.SecurityMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
)
請求
Host: xxx
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:42.0) Gecko/20100101 Firefox/42.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
X-CSRFToken: xxxxx
X-Requested-With: XMLHttpRequest
Referer: https://myip/myprojectl/upload/new/
Cookie: csrftokenportal=a
zk;
csrftokenmy=DKoPqrRjSd;
sessionidcentral=k88cccccc3;
csrftoken=xxxxxxxxxxxxx
Connection: keep-alive
DELETE https://myip/myproject/upload/delete/22
錯誤
403禁止
有什麼想法?由於
更多細節
CSRF verification failed. Request aborted.
Help
Reason given for failure:
CSRF token missing or incorrect.
In general, this can occur when there is a genuine Cross Site Request Forgery, or when Django's CSRF mechanism has not been used correctly. For POST forms, you need to ensure:
Your browser is accepting cookies.
The view function uses RequestContext for the template, instead of Context.
In the template, there is a {% csrf_token %} template tag inside each POST form that targets an internal URL.
If you are not using CsrfViewMiddleware, then you must use csrf_protect on any views that use the csrf_token template tag, as well as those that accept the POST data.
You're seeing the help section of this page because you have DEBUG = True in your Django settings file. Change that to False, and only the initial error message will be displayed.
You can customize this page using the CSRF_FAILURE_VIEW setting.
讀doc,似乎我已經做了三個方面的要求。
也許這可以幫助你:http://stackoverflow.com/questions/4547639/django-csrf-verification-failed – gglasses
@gglasses試過了,仍然陷在這個問題。也許我做錯了什麼。或缺少某些東西。 – BAE