2013-05-21 41 views
2

我是Django的新手。我遇到了無法將模型保存在views.py中的問題。這個概念是有一個用戶可以輸入名稱的輸入字段,然後使用request.POST.get('attribute_name')我可以保存我的模型,但它不起作用。當我打印該模型中所有對象的列表時,沒有任何內容,即使在所有這些過程中我都沒有收到錯誤消息。Django如何在視圖中保存模型

模板:

<form id="save_form" method="post" action="{% url 'project_view.views.projectz_save' %}"> 
{% csrf_token %} 
<table> 
<tr> 
    <td>Project Name</td> 
    <td><input name="projectz_name"/></td> 
</tr> 
</table> 
<input type="submit" value="Save" /> 
</form> 

views.py:

def projectz_save(request): 
try: 
    p = Project(name=request.POST.get('projectz_name')) 
    p.save() 
    return redirect('http://www.google.com/') 
except: 
    return redirect('http://www.google.com/') 

應用網址:

urlpatterns = patterns('', 
url(r'^$', views.index, name='index'), 
url(r'^$', views.register, name='register'), 
url(r'^$', views.projectz_save, name='project_save'), 

網站的網址:

urlpatterns = patterns('', 

url(r'^admin/', include(admin.site.urls)), 
url(r'^project_view/', include('project_view.urls')), 

我甚至把一些愚蠢的重定向代碼放到google.com上,看看views.py是否執行,但它不工作,雖然就像我說沒有錯誤信息,頁面只是刷新。我確信我做錯了,這很容易解決,但我是一個noobie。 :D

+0

你可以顯示你的'urls.py'嗎? –

+0

好的,在那裏編輯它們......感謝您的關注! – sugarmuff

+0

你可以檢查一下'action'是否在你的html中產生了'url'標籤? –

回答

7

好吧,我想也許我發現了這個問題。該view沒有執行,因爲你已經在你的項目urls.py定義的三個URL與精確regex

urlpatterns = patterns('', 
url(r'^$', views.index, name='index'), 
url(r'^$', views.register, name='register'), 
url(r'^$', views.projectz_save, name='project_save'), 
) 

Django的匹配它的網址,通過在路上遍歷圖案便出現這樣在該文件中的所有URL將匹配index 。這可能是頁面看起來令人耳目一新的原因。試圖修改此一點:

urlpatterns = patterns('', 
url(r'^$', views.index, name='index'), 
url(r'^register$', views.register, name='register'), 
url(r'^save$', views.projectz_save, name='project_save'), 
) 

這樣你可以在views.py執行projectz_save方法如果窗體的action的URL正則表達式匹配。

希望這會有所幫助!