Python Django手动创建和提交表单
问题是我的形式是动态的。根据数据库中的数据,每次都可能有不同数量的字段。我能够手动呈现此表单(通过将属性和类型作为上下文传递给模板)。但是我如何处理在django中按submit按钮的操作呢?假设您已经在views.py中有了一个函数来呈现模板,那么您基本上只需要验证是否发布了任何数据:Python Django手动创建和提交表单,python,django,forms,post,Python,Django,Forms,Post,问题是我的形式是动态的。根据数据库中的数据,每次都可能有不同数量的字段。我能够手动呈现此表单(通过将属性和类型作为上下文传递给模板)。但是我如何处理在django中按submit按钮的操作呢?假设您已经在views.py中有了一个函数来呈现模板,那么您基本上只需要验证是否发布了任何数据: def contact(request): # let's say it's a contact form if request.method == 'POST': # If the form has
def contact(request): # let's say it's a contact form
if request.method == 'POST': # If the form has been submitted...
print(request.POST)
# do your things with the posted data
else: # form not posted : show the form.
return render(...)
另外请注意,您必须在模板内的
和
之间的任何位置手动添加{%csrf\u token%}
,这基本上添加了一个隐藏字段,以保护您的站点免受跨站点请求伪造攻击
如果您这样做,只需在表单中不添加任何
操作
属性,这样它就可以发布到同一url。假设您已经在views.py中添加了一个函数来呈现模板,您只需验证是否有任何数据发布:
def contact(request): # let's say it's a contact form
if request.method == 'POST': # If the form has been submitted...
print(request.POST)
# do your things with the posted data
else: # form not posted : show the form.
return render(...)
另外请注意,您必须在模板内的
和
之间的任何位置手动添加{%csrf\u token%}
,这基本上添加了一个隐藏字段,以保护您的站点免受跨站点请求伪造攻击
如果你这样做,就不要在表单中添加任何
action
属性,这样它就会发布到同一个url。我还有两个问题!如何获取所有已发布的值?基于类的视图可以吗?request.POST.get('field\u name')
关于基于类的视图,请检查:我还有两个问题!如何获取所有已发布的值?是否可以使用基于类的视图?request.POST.get('field_name')
关于基于类的视图,请检查以下内容: