I'm trying to add a simple file upload page on my site. Whenever I submit the form, it says "This field is required" above the file selector, as if it's not passing it. Here is my form, model, and view.
forms.py
from django import forms
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
class UploadFileForm(forms.Form):
MURRMACMOD = "MMM"
CUBE67 = "C67"
CUBE20 = "C20"
VDINCONN = "VDC"
IMPACT20 = "I20"
IMPACT67 = "I67"
CAT_CHOICES = (
(MURRMACMOD, 'Murrelektronik Mac Module'),
(CUBE67, 'Cube67/Cube67'),
(CUBE20, 'Cube20'),
(VDINCONN, 'Valve DIN Connectors'),
(IMPACT20, 'Impact 20'),
(IMPACT67, 'Impact 67')
)
article = forms.CharField(max_length=100)
title = forms.CharField(max_length=100)
file = forms.FileField()
cat = forms.ChoiceField(choices=CAT_CHOICES)
models.py
from django.db import models
class File(models.Model):
article = models.CharField(max_length=100)
title = models.CharField(max_length=100)
file = models.FileField()
cat = models.CharField()
views.py
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
from files.forms import UploadFileForm
def upload_file(request):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('/success/url/')
else:
form = UploadFileForm()
ctxt_dict = {
'form': form,
}
context = RequestContext(request, ctxt_dict)
return render_to_response('upload.html', context_instance=context)
I would love some help guys, thanks.
EDIT: Here is the template.
{% if user.is_staff %}
<form action="." method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
{% else %}
{% endif %}
</form>