我已經明顯忘記了一些關於django真正基本的東西。這裏是我的views.py:django重定向POST後不工作
def sourcedoc_create(request):
if request.method == 'POST': # If the form has been submitted...
form = SourcedocForm(request.POST, request.FILES) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
handle_uploaded_file(request.FILES['doc'])
form.save()
return HttpResponseRedirect('/index/') # Redirect after POST
else:
form = SourcedocForm() # An unbound form
return render_to_response(
'sourcedoc_create.html',
{'form': form},
RequestContext(request)
這裏的urls.py的相關部分:
url(r'^$', index),
url(r'^index/', index),
url(r'^sourcedoc/create/', sourcedoc_create),
當我運行應用程序,我在數據庫中創建記錄,上傳的文件中出現成功相關目錄(因此我推斷form.save確定的工作),但後來我得到:
KeyError at /sourcedoc/create/
0
Request Method: POST
Request URL: http://www.rosshartshorn.net/worldmaker/sourcedoc/create/
Django Version: 1.4.3
看來,我的HttpResponseRedirect是,無論出於何種原因,不能正常工作,並且它試圖重新POST和日將KeyError從一個空白表單中劃出?或者其他的東西。無論如何,這不是重定向。當我手動去/ index /時,一切都很好,新的記錄就在那裏。
任何想法我的重定向有什麼問題?
萬一形式是相關的:
<body>
{% if form.errors %}
<p style="color: red;">
Please correct the error{{ form.errors|pluralize }} below.
</p>
{% endif %}
<h1>New Post</h1>
<form enctype="multipart/form-data" action="" method="post">
<table>
{{ form.as_table }}
</table>
{% csrf_token %}
<input type="submit" value="Submit">
</form>
而且,我使用mongoforms,這是應該像ModelForms工作:
from mongodbforms import DocumentForm
class SourcedocForm(DocumentForm):
class Meta:
document = Sourcedoc