Как вставить 2 разные формы на одной странице в Django - PullRequest
4 голосов
/ 03 мая 2010

Мне нужно вставить 2 формы на одной странице:

1) Регистрационная форма

2) Форма входа

.

Так что, если я использую это в views.py:

    if request.method == 'POST':

        form = registrationForm(request.POST) 
        if form.is_valid():  
            form.save()    
            return render_to_response('template.html', {
    'form': form,
})

Я получу ошибку, отправив одну из двух форм.

Как я могу отличить 2 формы, отправляющие в представлениях?

Ответы [ 6 ]

5 голосов
/ 03 июня 2013

Вы также можете сделать это,

 <form method='POST'>
    {{form1.as_p}}
    <button type="submit" name="btnform1">Save Changes</button>
    </form>
    <form method='POST'>
    {{form2.as_p}}
    <button type="submit" name="btnform2">Save Changes</button>
    </form>

КОД

if request.method=='POST' and 'btnform1' in request.POST:
    do something...
if request.method=='POST' and 'btnform2' in request.POST:
    do something...
3 голосов
/ 03 мая 2010

Вы можете отправить две формы на одной странице ... но действие, которое вызывает каждая форма (т. Е. Функция представления, которая будет обрабатывать каждую форму), вероятно, должно быть другим. Таким образом, вам не придется пытаться различать формы.

например. На вашей странице:

<form id="login_form" action="{% url app.views.login %}" method="post">

   ...form fields...

</form>

<form id="registration_form" action="{% url app.views.registration %}" method="post">

   ...form fields...

</form>

Итак, в views.py у вас будет функция представления login () и функция view registration (), которая будет обрабатывать каждую из этих форм.

2 голосов
/ 03 мая 2010

Вы можете опубликовать обе формы на один и тот же URL:

формы в шаблоне выглядят так:

<form method="post" action="/profile/">
{% for field in firstform %}
    <div class="mb10">
    <div class="fl desc">{{ field.label_tag }}<br />
    <div class="fr">{{ field }}{{ field.errors }}</div>
    <div class="clear"></div>
    </div>  
{% endfor %}
{% for field in secondform %}
    <div class="mb10">
    <div class="fl desc">{{ field.label_tag }}<br /><</div>
    <div class="fr">{{ field }}{{ field.errors }}</div>
    <div class="clear"></div>
    </div>  
{% endfor %}
<a class="submit fr" href="#""><img src="{{ MEDIA_URL }}img/save.png" /></a>
</form>

и просто обработайте их следующим образом:

if request.method == 'POST':
    firstform = ProfileForm(request.POST, request.FILES, instance=profile)
    secondform = UserForm(request.POST, instance=request.user)

и затем делайте вещи с firstform & secondform.

1 голос
/ 15 сентября 2016
 <form action="Page where u want to post the data" method="post">
    <input name="edit" type="submit" value="Edit Client">
    <input name="delete" type="submit" value="Delete Client">
 </form>

просто присвойте кнопкам разные имена.

if request.method == "POST" and 'edit' in request.POST:
 / Do /
if request.method == "POST" and 'delete' in request.POST:
 /Do /
1 голос
/ 20 ноября 2011

Вы можете отправлять обе формы на один и тот же URL-адрес и иметь скрытый ввод с именем, установленным для входа или регистрации, и сортировать его на сервере

1 голос
/ 03 мая 2010

Вы можете выполнить POST для регистрации и входа в систему по разным URL, поэтому каждый POST будет обрабатываться соответствующим представлением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...