Я пытался создать форму входа в django, используя хрустящие формы. Во время аутентификации у меня есть два поля: email_id и пароль. но в браузере отображается только поле пароля и возникает следующая ошибка:
Джанго версия 1.7.
WARNING:root:Could not resolve form field 'email_id'.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/crispy_forms/utils.py", line 74, in render_field
field_instance = form.fields[field]
KeyError: u'email_id'
Снимок отображаемой веб-страницы:
Модель пользователя, для которого я пытаюсь войти: model.py
class User(models.Model):
user_id = models.AutoField(primary_key=True)
title_id = models.ForeignKey('Title')
first_name = models.CharField(max_length=100)
middle_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
username = models.CharField(max_length=100, unique=True, default='')
password = models.CharField(max_length=100) # will be changed according to hash used
mobile_number = models.CharField(max_length=10)
alternate_number = models.CharField(max_length=10)
email_id = models.EmailField()
date_of_birth = models.DateField()
profession_id = models.ForeignKey('Profession')
house_no = models.CharField(max_length=100)
city_id = models.ForeignKey('City')
country_id = models.ForeignKey('Country')
state_id = models.ForeignKey('State')
locality_id = models.ForeignKey('Locality')
Класс для входа в файл view.py:
class LoginView(generic.FormView):
form_class = LoginForm
success_url = reverse_lazy('profile')
template_name = 'login.html'
#model = User
def form_valid(self, form):
email_id = form.cleaned_data['email_id']
password = form.cleaned_data['password']
user = authenticate(email_id=email_id, password=password)
if user is not None and user.is_active:
login(self.request, user)
return super(LoginView, self).form_valid(form)
else:
return self.form_invalid(form)
Класс для формы входа в forms.py:
class LoginForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super(LoginForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
'email_id',
'password',
ButtonHolder(
Submit('login', 'Login', css_class= 'btn-primary')
)
)