【发布时间】:2019-10-28 10:08:29
【问题描述】:
我有两个页面都包含表单。但是,两个页面都将发布请求发送到同一页面。如何区分哪个页面发送了请求。
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>
我的问题是,在我看来,我如何区分它来自哪个页面,它来自虚拟页面或与 nda 相同的页面。
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')
我无法弄清楚,我如何以不同的方式处理这两种情况
【问题讨论】:
-
为什么不让他们去两个不同的视图?
-
在那种情况下,我不会问这个问题
-
(1) 如果您正在编写应用程序的两端,为什么不使用像...
page_origin这样的普通参数? (2) 您可能认为views.py是两者的通用代码,并且刚刚遇到第一个反例,所以也许设计不正确......? (听起来您将不得不在不久的将来进行重构,您最好现在就从头开始)。正如肯特已经建议的那样。你似乎对你的设计太确定了,这是一个常见的错误。在这种情况下不复制某些代码可能会很昂贵。再考虑一下。 -
@HimanshuPoddar 抱歉,如果这是一个愚蠢的建议,但对我来说,这感觉就像 XY problem 的一个案例。为什么你不能让他们去两个视图?例如,您是否试图在视图中不重复代码?
-
通常您只需保留 action=""(空白),以便他们将 POST 到最初获取页面的 URL,这对于两个页面来说会有所不同。
标签: python django post django-views http-post