2013-04-24 65 views
0

我已經明顯忘記了一些關於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 

回答