我已经阅读了很多关于在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