Создаю простую форму для входа в систему:
class LoginForm(forms.ModelForm): password = forms.CharField(widget = forms.PasswordInput(), label = 'Your Password') class Meta: model = User fields = ('username', 'password')
class WelcomeView(View): http_method_names = ['get','post'] def get(self, request): template_name = 'Welcome.html' form = LoginForm() return render(request,template_name,{'form':form}) def post(self, request): logout(request) form = LoginForm(request.POST) if form.is_valid(): username = form.cleaned_data['username'] password = form.cleaned_data['password'] user = authenticate(username = username, password = password) if user is not None: if user.is_active: login(request,user) return redirect('schedule') else: print('User is inactive') else: print('Invalid login') print(form.errors) else: print('Not valid!', form.errors) form = LoginForm() return reverse('welcome')
<p>Please, login to proceed...</p> {% if form.errors %} <p> Your username and password didn't math</p> {% endif %} <form name = "LoginForm"action = "{{action}}" method="post"> {% csrf_token %} {% if form.non_field_errors %} <div class="form_errors"> {% for err in form.non_field_errors %} <div class="form_error_message">{{ err }}</div> {% endfor %} </div> {% endif %} {% for hidden in form.hidden_fields %} {{ hidden }} {% endfor %} {% for field in form.visible_fields %} <div {% if field.errors %}class="field_error"{% endif %}> {{ field.label_tag }} {{ field }} {% for err in field.errors %} <span class="error_message">{{ err }}</span> {% endfor %} </div> {% endfor %} {% for i in form.errors %} {{ i }} {% endfor %} <input type="submit" value = "login"> </form>
После прочтения документации и топиков форума ни один из способов не помог. Думал что как-то не так работает, и смог только отлавливать ошибки. Понимаю что их надо передавать обратно, но опыта не хватает это сделать.
Помогите, пожалуйста.
Буду благодарен за подробный ответ, а так же если “ткнете носом” где про это читать, т.к. документацию читал 2 раза
