我已經閱讀了很多關於在Django中創建和處理表單的文檔,但是我仍然對實現的某些方面感到困惑。具體來說,我無法理解我應該在哪裏處理由表單發送的數據。它是在使用表單模板的視圖還是在另一個視圖上?表單數據在哪裏處理? (Django)
例如,假設有一個單一形式的索引模板:
*index.html*
{% load url from future %}
<form action="{% url 'Directories:_results'%}" method="post">
Name: <input type="text" name="txtField" />
<input type="submit" name="submit" />
</form>
所以現在我認爲我有兩個版本:
#1版(1個視圖):同樣的觀點顯示器和處理表單
def index(request):
if request.method == 'POST': # If the form has been submitted...
form = dbForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
field = form.cleaned_data['txtField']
#doSomething
else:
form = dbForm() #unbound form
return render(request, 'Directories/index.html', {'form': form})
#2版(2次):一個視圖中顯示第E型和一個視圖處理表單數據
#the view that creates the form (unbound)
def index(request):
form = dbForm()
return render(request, 'Directories/index.html', {'form':form})
#the view that handles the data sent during form submission in the index template.
def results(request):
if request.method == 'POST':
form = dbForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
field = form.cleaned_data['txtField']
#doSomething
else:
form = dbForm() #unbound form
return render(request, 'Directories/index.html', {'form': form})
,這裏是我的urls.py:
from django.conf.urls import patterns, url
from Directories import views
urlpatterns = patterns('',
url(r'^$', views.index, name='_index'),
url(r'^results$', views.results, name='_results'),)
正如你可以看到每一個版本,因此我想進行數據處理不同要知道這些是否是錯誤的,如果兩者都是正確的,那麼哪一個被認爲是最佳實踐。
不知道你爲什麼要問這個,真的。在版本2中,第二個視圖與版本1中的視圖完全相同:那麼版本2中的第一個視圖有什麼意義? –
對於這個過於簡化的示例版本2似乎是多餘的,但是我想了解的是在哪裏處理數據?因此,我沒有試圖強調這個例子本身,而是強調它背後的概念以及哪個版本被認爲是最佳實踐。例如,在一個更復雜的例子中,你必須處理多個表單,每個表單都有多個提交按鈕,與版本1相比,版本2可以更好地分離問題。我相信這取決於你處理的情況,但是我的問題更像是什麼規範 – per7inac1ousQ