Как представить форму входа пользователя в шаблон?(Джанго) - PullRequest
2 голосов
/ 06 марта 2012

В настоящее время у меня есть

from django.contrib.auth.models import User

, но я не совсем понимаю, как вы можете использовать это для создания формы, в которой пользователи могут создавать себя в базе данных, а затем войти в систему.

Я нашел эту ссылку https://docs.djangoproject.com/en/1.2/topics/auth/#the-login-required-decorator в похожем вопросе, заданном здесь.Но я действительно запутался в том, как работает пользователь.Так что любые примеры возможных шаблонов переменных для представления логина будут отличными.также любое объяснение того, что происходит.Мне трудно понять, когда нет никакой документации, написанной так, как будто пользователь будет использовать ее, а не код, написанный для выполнения внутри оболочки.

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Для создания формы пользователя вы можете вручную создать форму с полями, которые вы хотите сохранить для пользователя, требуя как минимум имя пользователя и пароль

<form action="/signup/" method="POST">

Username: <input type="text" name="username" />

Password: <input type="text" name="password" />

</form>

тогда в представлении, которое указывает на вас, вы можете захватить ввод, как:

def signup(request):
  username = request.POST['username']
  password = request.POST['password']
  User.objects.create_user(username=username, email='', password=password)

Django предоставляет ярлык для этого, поэтому вам не нужно беспокоиться о создании собственных HTML-форм или проверке форм! Он все сделает за вас! Они называются модельными формами. https://doc.djangoproject.com/en/dev/topics/forms/modelforms/#model-formsets

Что касается декоратора login_required, он гарантирует, что пользователь вошел в систему, прежде чем ему будет разрешен доступ к этому конкретному представлению. Если это не так, они перенаправляются на страницу вашего LOGIN_URL в вашем файле settings.py.

Первый шаг к изучению работы пользователей - прочитать https://docs.djangoproject.com/en/1.2/topics/auth/#the-login-required-decorator сверху вниз и выполнить учебные пособия по коду.

Обязательно добавьте токен CSRF в формы, созданные вручную

1 голос
/ 06 марта 2012

вы можете переписать форму входа в систему как:

class MyLoginForm(AuthenticationForm):
'''Extend login form'''
    username = forms.CharField(
        label=_("username"),
        max_length=30,
        widget=forms.TextInput(attrs={
            'title': '请输入您的域名!',
            'id': 'id_username',
            'name': 'username'
        }))
    password = forms.CharField(
        label=_("password"), 
        widget=forms.PasswordInput(attrs={
             'title':'请输入域密码!',
             'id':'id_password',
             'name':'password'
        }))

здесь вы можете иметь свои собственные проверки для формы входа в систему.

, а затем в urls.py:

 (r'^accounts/login/$', 
      'django.contrib.auth.views.login',
      {'template_name': 'login.html','authentication_form':MyLoginForm,}),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...