我有一篇文章應用程序,在我向其添加圖像字段headimage
之前,它曾經工作得很好。爲什麼我在Django中得到MultiValueDictKeyError?
這裏是模型:
class Article(models.Model):
nid = models.IntegerField(default=0)
headimage = ImageWithThumbsField(upload_to='images', blank=True, sizes=((200,200),(400,400))
title = models.CharField(max_length=100)
author = models.CharField(max_length=100, blank=True)
translator = models.CharField(max_length=100, blank=True)
body = models.TextField()
teaser = models.TextField('teaser', blank=True)
created=models.DateTimeField(default=datetime.datetime.now)
pub_date=models.DateTimeField(default=datetime.datetime.now)
categories = models.ManyToManyField(Category, blank=True)
slug = models.CharField(max_length=100, blank=True)
tags = TaggableManager()
的觀點:
#@staff_member_required
def add_article(request):
if request.method == 'POST':
dform = ArticleForm(request.POST, request.FILES)
if dform.is_valid():
form = Article(headimage = request.FILES['headimage'])
form.save(commit=False)
form.user = request.user
form.save()
form.save_m2m()
messages.info(request, "article was added")
#args = {}
post = Article.objects.latest('id')
post_slug = post.slug
return redirect('article.views.post_withslug', post_slug=post_slug)
else:
print "form not valid"
if request.method == 'GET':
form = ArticleForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render(request, 'article/add_article.html', args)
而且模板:
<form action="{% url "article.views.add_article" %}" method="post">{% csrf_token %}
<div class="form-group">
<label>Head Image</label>
<input type="file" id="id_headimage" name="headimage" >
</div>
<div class="form-group">
<label>Title</label>
<input id="id_title" maxlength="100" name="title" type="text">
</div>
<div class="form-group">
<label>Author</label>
<input id="id_author" maxlength="100" name="author" type="text">
</div>
<div class="form-group">
<label>Translator</label>
<input id="id_translator" maxlength="100" name="translator" type="text">
</div>
<div class="form-group">
<label>Body</label>
{% include "texteditor.html" %}
<textarea id="id_body" name="body" rows="20" cols="180"></textarea>
</div>
<div class="form-group">
<label>tags</label>
<input id="id_tags" maxlength="100" name="tags" type="text">
</div>
<input type="submit" name="submit" value="Update" />
</div>
</form>
值得關注的是 1.像場使用this出色的圖像調整我在其他地方成功使用的代碼片段。 2.即使沒有圖像張貼在表單中,我也會收到錯誤信息。
我已經嘗試了不同的視圖技巧,但在這個股票上好幾個小時。感謝您的幫助。
更新:這裏是引用:
環境:
Request Method: POST
Request URL: http://127.0.0.1:8000/add/article
Django Version: 1.8
Python Version: 2.7.3
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'contact',
'captcha',
'article',
'debug_toolbar',
'userpics',
'taggit')
Installed Middleware:
(u'debug_toolbar.middleware.DebugToolbarMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/home/randi/.env/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/randi/proj1/article/views.py" in add_article
90. form = Dastan(headimage = request.FILES['headimage'])
File "/home/randi/.env/local/lib/python2.7/site-packages/django/utils/datastructures.py" in __getitem__
322. raise MultiValueDictKeyError(repr(key))
Exception Type: MultiValueDictKeyError at /add/article
Exception Value: "'headimage'"
您可以發佈完整的追溯,如果可用的文本編輯模板。 –
@ C.B。我剛添加了引用。 – Jand