Джанго: Как отличить почтовые запросы от разных страниц, приходящих на одну и ту же страницу? - PullRequest
0 голосов
/ 28 октября 2019

У меня есть две страницы, содержащие форму. Однако обе страницы отправляют запрос на одну и ту же страницу. Как определить, на какую страницу был отправлен запрос.

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.

просмотров. 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')

Я не могу понять, как мне обрабатывать оба случая по-разному

Ответы [ 2 ]

2 голосов
/ 28 октября 2019

Если я правильно понимаю ваш вопрос, вы можете использовать атрибут имени в кнопке отправки

<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
        ...
0 голосов
/ 28 октября 2019

Как это работает? Вы нажимаете кнопку отправки, и сервер обращается к .. Кнопка с типом отправки следует пути «действия», указанному в теге формы. То есть, чтобы у вас был запрос на разные страницы, вам нужно создать дополнительный URL,views и html

Пример:

one_html.html

<form action="{% url your_app:name1 %}" 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>

urls.py:

...
url(r'^' + app_name + 'some_path', views_one, name='name1'),

views.py:

def views_one(request):
    if request.method=='POST':
        # do something

Пример:

two_html.html

<form action="{% url your_app:name2 %}" 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>

urls.py:

...
url(r'^' + app_name + 'some_path', views_two, name='name2'),

views.py:

def views_two(request):
    if request.method=='POST':
        # do something

Разница в том, что действие указывает на другой URL и, следовательно, будет называться различными представлениями

...