2014-03-03 39 views
4

如何將信息從HTML表單傳遞到我的Python代碼,而無需指定url映射?例如,以下代碼將數據從我的'index.html'模板中的表單發送到'myview'映射,然後調用'myview'視圖函數,最終呈現'mypage'模板...Django:在沒有url映射的情況下調用視圖函數

的index.html

<form method="get" action="{% url 'myview' %}"> 

urls.py

urlpatterns = patterns('', 
url(r'^mypage/$', views.myview, name='myview'), 
) 

views.py

def myview(request): 
    return render(request, 'myapp/mypage.html') 

但是,我真的必須有一個這樣的URL映射?如果我不想重新加載另一個網頁,我只想保持在同一個'index.html'頁面?

對於視圖如何實際調用,我希望視圖更像傳統函數,處理某些數據而不是必須呈現新模板,我只是有點困惑。

謝謝!

回答

3

總是如果您希望瀏覽器調用視圖,則需要URL。服務器如何知道要調用哪個視圖?唯一的方法是通過URL映射。請記住,瀏覽器和服務器之間沒有持久的關係:它們可以通信的唯一方式是通過對URL的請求。

儘管如此,您並不總是需要呈現模板。視圖可以返回任何內容,包括原始文本或JSON。

我不明白你的意思是不重新加載其他頁面。向服務器發佈數據是對另一個頁面的請求:這就是HTTP的工作原理。您當然可以選擇發佈到您當前所在的同一頁面;事實上,這正是如何在推薦的Django模式中處理表單的方式。但你仍然需要一個指向該頁面的URL映射,以便首先獲取它並處理提交的數據。

相關問題