Python django中窗体的工作方式

Python django中窗体的工作方式,python,django,Python,Django,我确信这是一个愚蠢的问题,但我试图理解窗体在django中是如何工作的,我对模板中的action属性和views.py中的httpresponseredirect感到困惑 我有以下模板: <form action="/play_outcomes/output/" method="post"> {% csrf_token %} {{ form }} <input type="submit" value="Submit" /> </form>

我确信这是一个愚蠢的问题,但我试图理解窗体在django中是如何工作的,我对模板中的action属性和views.py中的httpresponseredirect感到困惑

我有以下模板:

<form action="/play_outcomes/output/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>
最后是forms.py

class get_data(forms.Form):
    get_down = forms.IntegerField(label = "Enter a down")
    get_ytg = forms.IntegerField(label = "Enter yards to go")
    get_yfog = forms.IntegerField(label = "Enter yards from own goal")

当我进入
播放结果/getinput
时,我的表单就会出现。当我按下“提交”按钮时,它将显示
播放结果/输出
页面,可能是因为
指定了该页面,请尝试将表单操作替换为
操作=“”
。一切都应该继续正常工作,因为您的视图同时处理GET请求(显示空表单)和POST请求(提交表单时处理)。当您按“提交”时,您的浏览器将表单数据发送回它从中获取原始网页的位置。相同的URL,相同的视图(
getinput()
),相同的模板文件(
play\u outcouts/getinput.html

通常,在
HttpResponseRedirect()
部分之前,您需要包含一些逻辑来保存表单的内容、给用户发送电子邮件、进行一些计算等。在这一点上,由于用户已经完成了该页面的所有操作,您通常会将它们重定向到站点上的其他地方


编辑:空操作

尝试将表单操作替换为
action=“”
。一切都应该继续正常工作,因为您的视图同时处理GET请求(显示空表单)和POST请求(提交表单时处理)。当您按“提交”时,您的浏览器将表单数据发送回它从中获取原始网页的位置。相同的URL,相同的视图(
getinput()
),相同的模板文件(
play\u outcouts/getinput.html

通常,在
HttpResponseRedirect()
部分之前,您需要包含一些逻辑来保存表单的内容、给用户发送电子邮件、进行一些计算等。在这一点上,由于用户已经完成了该页面的所有操作,您通常会将它们重定向到站点上的其他地方


编辑:空动作

没有点;POST块中的任何内容都不会被执行。但你不会写这样的代码。表单操作也应该指向getinput。@Daniel——我想你的意思是在getinput(请求)函数中?那么执行什么呢?没有意义;POST块中的任何内容都不会被执行。但你不会写这样的代码。表单操作也应该指向getinput。@Daniel——我想你的意思是在getinput(请求)函数中?那么执行什么?明白了-这很有帮助。谢谢,这很有帮助。谢谢
class get_data(forms.Form):
    get_down = forms.IntegerField(label = "Enter a down")
    get_ytg = forms.IntegerField(label = "Enter yards to go")
    get_yfog = forms.IntegerField(label = "Enter yards from own goal")