我目前正在从'如何与django探戈'网站学习django,我无法理解关于表格的章节。 如果有人帮助我,请欣赏它。
http://www.tangowithdjango.com/book17/chapters/forms.html
第一步是创建一个映射到models.py的表单页面。我似乎明白这一部分。我也明白我们创造 处理从这些表单获取的数据的视图。我无法理解视图页面中的以下代码。
from rango.forms import CategoryForm
def add_category(request):
# A HTTP POST?
if request.method == 'POST':
form = CategoryForm(request.POST)
else:
# If the request was not a POST, display the form to enter details.
form = CategoryForm()
在用户实际输入表单中的任何数据之前,urlmapper如何知道请求方法是POST还是GET? 在类似的说明中,表单何时会有get方法?
form = CategoryForm(request.POST)
- 有人会向我解释这个吗? CategoryForm看起来是一个已经从另一个类继承的类
request.POST参数传达了什么?
答案 0 :(得分:1)
1) urlmapper 默认情况下不关心GET或POST请求方法。它会将任何请求路由到给定的视图函数。
通常,您的表单html代码将如下所示:
<form method="post" action="some_url">
...
</form>
因此,当您提交表单时,数据将使用指定的方法发送到 some_url ,在本例中为 post 。< / p>
您可能想要了解何时使用GET或POST,通常使用POST传输表单。
2)form = CategoryForm(request.POST)
会将请求的POST字典中提供的值绑定到表单。你可以说,它预先填充了这个。通过这种方式,可以进一步使用表单(例如通过调用form.is_valid()
进行验证)。
也许您应该通过阅读一些official documentation来进一步调查Django表单和模型。
答案 1 :(得分:0)
为什么你认为URL映射器知道它是否是一个帖子?它没有,也没关心。
你缺少的是这个视图有两个职责:显示初始表单(在GET上)和处理提交的表单(在POST上)。
您的第二个问题表明对基本Python语法不熟悉。 request.POST
是表单实例初始化的参数。