Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » две формы авторизации на одной странице [RSS Feed]

#1 Сен. 2, 2009 14:18:16

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

Ferroman
Ага. Так передавать тогда hidden поле с идентификатором формы, и не парится.
Правда лучше таки на разные вьюхи разбить а не городить кучу…
Тогда придется свои обработчики для каждого шаблона делать вместо стандартного login.



Офлайн

#2 Сен. 2, 2009 14:21:19

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

Ferroman
По каким урлам, и где это “автоматом”? Сами же сказали - action'ы одинаковые
Для чайников вроде меня Джанга предоставляет такой сервис.



Отредактировано (Сен. 2, 2009 14:45:34)

Офлайн

#3 Сен. 2, 2009 14:23:03

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

Nick2009
Мы наверное разными джангами пользуемся.
Да Джанга то как раз одна. Мы вот все тут разные.
Nick2009
Я пока пользуюсь дефолтным функционалом и всё у меня работает, я даже эту хрень заставлю работать.
Похвально.
Nick2009
Просто хотел обсудить насколько это плохо.
Очень.
Nick2009
Вьюха, получается, одна и это login , а темплейтов много.
Вьюха логин, как следует и её названия - логинит пользователя. Про регистрацию она ничего не знает. Это хорошо.
Nick2009
Как обработчик login прикрутить к logout с текстом?
Тоже хорошо. Есть логаут, который делает что должен и про регистрацию тоже ничего не знает.
Nick2009
Как обработчик login прикрутить к logout с текстом?
Обработчик никуда прикручивать не надо. Для логина, как мы поняли, есть своя вьюха.
Nick2009
Как login прикрутить к register, если у него совсем другой функционал.
Аналогично - ничего не надо никуда прикручивать.
Nick2009
ТЗ потомучто! Все страницы имеют форму login-а, а по дефолту урл должен выглядеть так
У вас в ТЗ прописано, что все эти три джанговские вьюхи должны уметь делать дела друг друга? Нет. Так зачем вы пытаетесь их это заставить?

Теперь немного форумной магии - следите за руками.

Предположим, что вы дали каждому из урлов правильное имя (login, logout, register), и что вот это как раз и есть многострадальный шаблон для вьюхи регистрации:
{% if not user.is_authenticated %}
<form action="{% url login %}?next={% url registration %}" method="POST">
<!-- Тут поля для логина -->
</form>
{% else %}
<form action="{% url logout %}?next={% url registration %}" method="POST">
</form>
{% endif %}

<form action="{% url registration %}" method="POST">
<!-- Тут поля для регистрации -->
</form>
Видите? И совсем не больно. Итого у вас остались три независимые вьюхи и при этом вы удовлетворили своё стремление следовать ТЗ.



Офлайн

#4 Сен. 2, 2009 14:43:17

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

Daevaorn
Предположим, что вы дали каждому из урлов правильное имя (login, logout, register), и что вот это как раз и есть многострадальный шаблон для вьюхи регистрации:
Код:

{% if not user.is_authenticated %}
<form action=“{% url login %}?next={% url registration %}” method=“POST”>
<!– Тут поля для логина –>
</form>
{% else %}
<form action=“{% url logout %}?next={% url registration %}” method=“POST”>
</form>
{% endif %}

<form action=“{% url registration %}” method=“POST”>
<!– Тут поля для регистрации –>
</form>

Видите? И совсем не больно. Итого у вас остались три независимые вьюхи и при этом вы удовлетворили своё стремление следовать ТЗ.
Это всё так конечно, но…
1) Забыли попрощаться после logout
2) Почему для login следующая страница - registration, а не profile?
3) Есть еще несколько страниц, которым нужна форма логина.



Офлайн

#5 Сен. 2, 2009 14:44:28

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

1. Я не телепат.
2. Документация Django начинается с “Overview” а не с “Введения”
3. Я думаю, такой внимательный человек сам разберётся без нашей помощи.

Отредактировано (Сен. 2, 2009 14:45:56)

Офлайн

#6 Сен. 2, 2009 14:46:39

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

Ferroman
1. Я не телепат.
2. Документация Django начинается с “Overview” а не с “Введения”
3. Я думаю, такой внимательный человек сам разберётся без нашей помощи.
Извиняюсь, я исправил.



Офлайн

#7 Сен. 2, 2009 15:10:40

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

Nick2009

Nick2009
Почему для login следующая страница - registration, а не profile?
Тут логика такая - надо вернуться на ту страницу, где пользователь воспользовался виджетом логина. В данном случае это страница регистрации, а в общем “текущая страница”. Но это всё на усмотрение автора.

Вы суть уловили?



Офлайн

#8 Сен. 2, 2009 15:28:34

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

Daevaorn
Nick2009
Nick2009
Почему для login следующая страница - registration, а не profile?
Тут логика такая - надо вернуться на ту страницу, где пользователь воспользовался виджетом логина. В данном случае это страница регистрации, а в общем “текущая страница”. Но это всё на усмотрение автора.

Вы суть уловили?
В целом, да, а так, нет. Текущая страница это ‘.’, поэтому я и говорил, что action одинаковый.
После логина нужно на profile, а не на текущую. Дефолтный логин сам туда направляется, ничего указывать не нужно.



Отредактировано (Сен. 2, 2009 15:29:07)

Офлайн

#9 Сен. 2, 2009 15:43:12

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

В частности, для решения проблемы с logout мне нужно передать новый параметр, чтобы его отловить в шаблоне.
Как это сделать или какой из параметров logout можно задействовать?

Требуется примерно следующее

(r'^accounts/logout/$',logout,{'template_name':'index.html','after_logout':'yes'}),
Затем в index.html

{% if after_logout%} Вы успешно вышли! {endif}

И всё равно это будет не то, что нужно, т.к. от того, что я вызываю index.html (с формой логина), он не будет работать также как если бы он был вызван из login.

Т.е. нужно сказать logout, чтобы вместо шаблона “после выхода”, был вызван login с дефолтным шаблоном и в этот дефолтный шаблон был передан параметр, который определен только для logout.



Отредактировано (Сен. 2, 2009 15:54:55)

Офлайн

#10 Сен. 2, 2009 16:51:15

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

две формы авторизации на одной странице

Nick2009
Текущая страница это ‘.’, поэтому я и говорил, что action одинаковый.
Нет. Action как раз разный - в этом суть. И ‘.’ бессмысленно передавать как next.



Офлайн

  • Начало
  • » Django
  • » две формы авторизации на одной странице[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version