Dark_Knight
@Dark_Knight
Game Dev

Как сделать форму регистрации и форму вход на сайт на одной странице?

Здравствуйте.

Подскажите пожалуйтса.

Есть форма регистрации и входа на сайт, которые расположены на одной странице и имеют одно urls.

#urls.py
urlpatterns = patterns('users.views',   
    url(r'^$', 'PersonRegistration', name = 'Home Page'),   
    url(r'^$', 'LoginRequest', name = 'Home Page'),    
)


Обе они находятся в одном views

#views.py
def PersonRegistration(request):
    ...

def LoginRequest(request):
    ...


Регистрация работает, все супер! Но… Как только я подключаю LoginRequest и пытаюсь зайти через него зарегестрированным пользователем, то начинает обрабатываться и форма регистрации PersonRegistration…

Как мне отделить формы и сделать так чтоб обрабатывалась только та, которая нужна.

action=""

Очень нужна ваша помощь, уважаемые знатоки…

Спасибо
  • Вопрос задан
  • 11776 просмотров
Пригласить эксперта
Ответы на вопрос 5
BuriK666
@BuriK666
Компьютерный псих
<form>
<input type="hidden" name="form" value="registration" />
</form>

<form>
<input type="hidden" name="form" value="auth" />
</form>
Ответ написан
taliban
@taliban
php программист
А я бы советовал разделить эти две страницы =) Разные ведь вещи делают, зачем лепить все в одно место?
Ответ написан
@marazmiki
Укротитель питонов
Дикость какая-то.

Зачем обрабатывать регистрацию и вход в одной вьюхе-то? Ладно, можно на одной странице обе формы вывести, если совсем неймётся. Но обрабатывать!..
Ответ написан
@marazmiki
Укротитель питонов
Проще всего сделать отдельную страничку, на которой будут обе формы. Только вывод, никакой обработки.

Сперва написать вьюху:
from django.shortcuts import render
def all_in_one(request):
    return render('reg_and_login.html', {
        'login_form': LoginForm(),
        'register_form': RegistrationForm()
    })

Затем добавить её к тем, что уже объявлены. Особое внимание уделить тому, чтобы регистрация и вход ввели на разные урлы:

url(r'^$', 'all_in_one'), # Добавили
url(r'^registration/$', 'PersonRegistration', name = 'register-form'), # Изменили
url(r'^login$', 'LoginRequest', name = 'login-form'),  # Изменили

И сделать шаблон (этот код взят из ответа larikov):

<!-- reg_and_login.html -->
<form action="{% url login-form %}" method="post">
    {{ login_form }}
</form>

<form action="{% url register-form %}" method="post">
     {{ register_form }}
</form>
Ответ написан
@larikov
Меня больше интересует, как в вашем случае django знает, какой view отображать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы