如何运作?您单击提交按钮,服务器正在访问..类型为commit的按钮遵循表单标签中指定的“操作”路径也就是说,为了请求不同的页面,您需要创建一个附加的url,视图和html
我有两个页面都包含表单。但是,两个页面都将发布请求发送到同一页面。如何区分哪个页面发送了请求。
dummy.html(第一页)
<form action="/nda" method='POST'>
{% csrf_token %}
<button type="submit" name="submit" id="submit" value="I Agree" target="_blank">I Agree</button>
<button onclick="window.open('/greeting')" target="_blank"> I Disagree </button></br>
</form>
此页面重定向到nda页面。
nda.html(第二页)
此页面还会重定向到同一页面。
<form action="/nda" method='POST'>
{% csrf_token %}
<button type="submit" name="submit" id="submit" value="I Agree" target="_self">I Agree</button>
<button onclick="window.open('/greeting')" target="_self"> I Disagree </button></br>
</form>
我的问题是,我如何区分页面虚拟页面是来自哪个页面还是虚拟页面是同一页面。
views.py
def nda(request):
if request.method=='POST' :
# if this is from dummy I want to do this
return render(request,'mainapp/nda.html',{'user':email.split('@')[0]})
if request.method=='POST' :
# if this is from same page that is nda I want to do this
return render(request,'mainapp/home.html')
我不知道如何处理这两种情况
如果我正确理解了您的问题,则可以在提交按钮中使用name属性
<button type="submit" name="submit1" id="submit" value="I Agree" target="_blank">I Agree</button
<button type="submit" name="submit2" id="submit" value="I Agree" target="_blank">I Agree</button
在视图中
def nda(request):
if request.method=='POST' and 'submit1' in request.POST :
# do something
return render(request,'mainapp/nda.html',{'user':email.split('@')[0]})
elif request.method=='POST' and 'submit2' in request.POST:
#do something else
...
nda.html]中的表单未指定method='POST'
,因此从此表单调用的请求将默认使用GET
。
您可以通过在views.py
中捕获request.method=='GET'
来处理它def nda(request):
if request.method=='GET' :
# if this is from dummy I want to do this
return render(request,'mainapp/nda.html',{'user':email.split('@')[0]})
...
如何运作?您单击提交按钮,服务器正在访问..类型为commit的按钮遵循表单标签中指定的“操作”路径也就是说,为了请求不同的页面,您需要创建一个附加的url,视图和html
示例:
one_html.html
{%csrf_token%}我同意我不同意urls.py:
...url(r'^'+ app_name +'some_path',views_one,name ='name1'),
views.py:
def views_one(request):如果request.method =='POST':#做某事
示例:
two_html.html
{%csrf_token%}我同意我不同意urls.py:
...url(r'^'+ app_name +'some_path',views_two,name ='name2'),
views.py:
def views_two(request):如果request.method =='POST':#做某事
不同之处在于操作指向不同的URL,因此将被称为不同的视图
如何运作?您单击提交按钮,服务器正在访问..类型为commit的按钮遵循表单标签中指定的“操作”路径也就是说,为了请求不同的页面,您需要创建一个附加的url,视图和html