user1072646 user1072646 - 4 years ago 233
Python Question

Django: CSRF token missing or incorrect

The error is at location

I have version 1.3 of django. I have tried specifying localhost:8000 as stated in someone else's question but this did not work for me. I am trying to have a file upload form but I am receiving an error that does not have the CSRF token.

class UploadFileForm(forms.Form):

title = forms.CharField(max_length=50)
file = forms.FileField()

def upload_file(request):

c = {}

if (not request.user.is_authenticated()) or (request.user == None):
return HttpResponseRedirect("/?error=11")

if request.method == 'POST':
form = c['UploadFileForm'] = UploadFileForm(request.POST, request.FILES, c, context_instance=RequestContext(request))

if c['UploadFileForm'].is_valid():
return HttpResponseRedirect('/success/url/')

form = c['UploadFileForm'] = UploadFileForm()
return render_to_response('fileupload/upload.html', {'form': c['UploadFileForm']})


{% block main_content %}

<form action="fileupload/" enctype="multipart/form-data" method="POST">
{% csrf_token %}

<tr><td>Title:</td><td><input type="text" name="title" /></td></tr>
<tr><td>File:</td><td><input type="file" name="file" /></td></tr>
<input type="submit" value="Submit" class = "float_right button_input" />


{% endblock main_content %}

I am very stumped please tell me some things to try. Thank You

Answer Source

You need to pass RequestContext in render_to_response for csrf_token

For this : (

from django.template import RequestContext


return render_to_response('fileupload/upload.html', {'form': c['UploadFileForm']},  RequestContext(request))
# Added RequestContext

This passes the token for csrf to the template.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download