Handling requests in Django
我刚开始Django,对于处理请求我有几个基本问题。
如果我有两个功能。
如果我有观点,说
1 2 | def test(): return render(request, 'form.html') |
在form.html中,我有一个带有
所以现在,如果我想对提交的表单数据做些什么,我是应该在同一个
我一直在和后者合作,但后来我读到:需要一个最小的django文件上传示例。在这里,在关于
这是怎么回事?这似乎很不具有说服力。还是我错过了什么?
在Django中,可以在同一视图中处理
1 2 | url(r'^test/$', 'myapp.views.test', name='test'), url(r'^test_post/$', 'myapp.views.test_post', name='test_post'), |
号视图.py
1 2 3 4 5 6 7 8 9 10 | def test(request): #Do your regular get method processes here if request.POST: #Do something with post data here return render_to_response('form.html', locals(), context_instance = RequestContext(request)) def test_post(request): if request.POST: #Do something with post data here return render_to_response('form.html', locals(), context_instance = RequestContext(request)) |
如果您希望在同一视图中处理您的日志数据,那么请按照下面给出的格式将集合
1 | <form method="post" action="." id="form_id" name="form_name"> |
。
如果您希望在不同的视图中处理您的日志数据,那么请按照下面给出的格式将集合
1 | <form method="post" action="/test_post/" id="form_id" name="form_name"> |
在您的视图中,您将检查表单是否已发布,如下所示。
1 2 3 4 5 | def test(request): # A view always needs a request if request.method =="POST": # Do validation stuff here else: return render(request, 'form.html') |
但我建议您看一下django表单,它是一个内置的函数,使表单和验证变得容易得多。
上面的答案很好,但是如果您仍然有点困惑,让我们把您提供的一些信息分解一下,看看我们是否能够理解核心问题,这就是确定什么时候会发生什么。
如果您的函数"test()"映射到一个URL,例如"/test/"..然后,我们还可以假设您正在尝试了解当您提交到url"/submitted/"时会发生什么。
在表单提交过程中指向"表单操作"的地方就是数据的去处(例如/submitted/)。
如果您告诉表单在HTML表单代码中提交到"/submitted/",那么所有表单数据处理都将在视图"submitted()"中处理,如果您还没有进行处理,则必须进行该视图(为了便于理解,假设命名)。
就像Arulmr建议的那样,根据您的示例场景,您的代码可能看起来像这样:
1 2 3 4 5 6 7 | def test(request): return render(request, 'form.html') def submitted(request): if request.POST: #Do something with post data here return render_to_response('form_message.html') |
。
更广为人知和"直观"的方法是让表单提交给自己,而不是另一个视图或URL。
1 2 3 4 | def test(request): if request.POST: #Do something with post data here return render_to_response('form_message.html') |
。
还有…
1 | <form method="post" action="."> |
"action="""表示服从自己。
希望这能增加清晰度。