Я пытаюсь выполнить вход в систему с помощью модема начальной загрузки, чтобы к нему можно было получить доступ с любой страницы через панель навигации с помощью всплывающего окна входа в систему.
Теперь проблема в том, как передать эту форму, чтобы все страницы могли получить к ней доступ? На данный момент я получаю эту ошибку:
BootstrapError at /
Параметр «form» должен содержать действительную форму Django.
Вместо того, чтобы использовать отдельную страницу для моей формы входа, у меня теперь есть это:
login3.html
{% load bootstrap3 %}
<div class="modal fade" id="login-modal" tabindex="-1" role="dialog"
aria-labelledby="myModalLabel" aria-hidden="true" style="display: none;">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header" align="center">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>
</button>
</div>
<div id="div-forms">
<form id="login-form" action="{% url 'login3' %}" method="post"
enctype="multipart/form-data">
{% csrf_token %}
<div class="modal-body">
{% bootstrap_form form %}
</div>
<div class="modal-footer">
{% buttons %}
<button type="submit" class="btn btn-primary">Login</button>
{% endbuttons %}
</div>
</form>
</div>
</div>
</div>
</div>
Вид:
class Login3View(NextUrlMixin, RequestFormAttachMixin, FormView):
form_class = LoginForm
template_name = 'accounts/login3.html'
success_url = '/'
default_next = '/'
А потом я просто включаю шаблон login3.html вместе с моей панелью навигации, чтобы форма загружалась на каждой странице.
Я увидел на другом вопросе ответ от C14L ( Вход в Django из модального окна ), который выглядел многообещающе, но не смог заставить его работать.
Спасибо за любые советы.
Обновление:
вот форма LoginForm
class LoginForm(forms.Form):
email = forms.EmailField(label='Email')
password = forms.CharField(widget=forms.PasswordInput)
def __init__(self, request, *args, **kwargs):
self.request = request
super(LoginForm, self).__init__(*args, **kwargs)
def clean(self):
request = self.request
data = self.cleaned_data
email = data.get("email")
password = data.get("password")
qs=User.objects.filter(email=email)
if qs.exists():
#user email is registered, check active/email activation
not_active = qs.filter(is_active=False)
if not_active.exists():
#not active, check email activation
....