1. anonimius

    20.10.2010

    0 ↑
    0 ↓
    Как прописать в шаблоне вывод формы авторизации?
    Сейчас выводится толко на /accounts/login/ через django.contrib.auth
  2. YAD

    20.10.2010

    0 ↑
    0 ↓

    Во вьюхе инициализируешь форму авторизации и выводишь как обычную форму. http://docs.djangoproject.com/en/1.2/topics/auth/#module-django.contrib.auth.forms

    Если вам нужно выводить эту форму на всех страницах можно написать темплэйт тег который будет её рисовать и его вставить в "главный шаблон"

  3. slav4e

    20.10.2010

    0 ↑
    0 ↓
    у меня так...кстати поправьте если что не так

    views.py
    def login(request):
    message=''
    form_login=''
    user_name=''
    user_auth=''
    if(request.method == "POST"):
    form_login = LoginForm(request.POST)
    if form_login.is_valid():
    data = form_login.cleaned_data

    username = data['username']
    password = data['password']

    user = auth.authenticate(username=username, password=password)

    if user is not None and user.is_active:
    auth.login(request, user)
    return redirect("/p")
    forms.py
    from django import forms

    class LoginForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField(widget=forms.PasswordInput)
    шаблон
     <form action="/p/login/" method="POST"> {% csrf_token %}
    <dl>
    <dt>Имя пользователя:</dt>
    <dd>{{ form_login.username }}</dd>
    <dt>Пароль:</dt>
    <dd>{{ form_login.password }}</dd>
    </dl>
    <input type="submit" value="Войти">
    </form>
    urls.py
    urlpatterns = patterns('',
    #...
    (r'^p/login/$',login), # тут меняем путь на любой другой
    #...
    )
  4. Cyrill

    20.10.2010

    0 ↑
    0 ↓
    slav4e, зачем делать лишнюю работу, если уже фреймовр предоставляет все для этого?
    urlpatterns = patterns('',
    url(r'^login/$', 'django.contrib.auth.views.login', {'template_name': 'login.html'}),
    )
    Плюс в настройках сделать как надо для проекта:
    LOGIN_REDIRECT_URL = '/'
    LOGIN_URL = '/login/'
    LOGOUT_URL = '/logout/'
    Ну, еще сам шаблон написать для формы авторизации.
  5. YAD

    20.10.2010

    0 ↑
    0 ↓

    Cyrill прав

    добавлю ссылку http://docs.djangoproject.com/en/1.2/topics/auth/#django.contrib.auth.views.login

    и ссылка выше в моём посте тоже на эту тему только о встроенной форме для "Входа"

  6. slav4e

    20.10.2010

    0 ↑
    0 ↓
    Cyrill, дело в том, что она у меня подгружается из всплывающего окна на jquery и только потом проверяется на /login после отсылки данных
  7. YAD

    20.10.2010

    0 ↑
    0 ↓

    Ничего не мешает вывести форму в скрытый див(по крайней мере так по умолчанию работает jquery ui popup)и потом показать его. И потом отправить его на обработку в стандартную вьюху, вписав её url в action формы(тоже самое аяксом)?

    Вообще я не уверен, что я вас понял "... и только потом проверяется на /login после отсылки данных." тут какая-то не состыковка.

  8. slav4e

    20.10.2010

    0 ↑
    0 ↓
    YAD, скажите мне что лучше:
    написать свою форму, в своем попапе...чтобы понять как это работает
    или воспользоваться готовым вариантом..плюс дополнить сие непонимание jquery ui popup плагином....

    про состыковку...
    сама форма на index'e...форма ведёт на функцию login......которая вне зависимости от исхода перенаправляет на главную(ну соответственно с сессией или без)
  9. YAD

    20.10.2010

    0 ↑
    0 ↓

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

    2)"вне зависимости от исхода перенаправляет на главную" - если почитать по моей последней ссылки даже без знания английского, по примерам видно что в форме можно указать адрес, куда перенаправлять в случае успешной авторизации, в скрытом поле по имени next.

  10. slav4e

    21.10.2010

    0 ↑
    0 ↓
    спасибо за ссылку:)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.