почему мой логин не работает? этот код никуда меня не перенаправляет и не показывает никаких ошибок - PullRequest
0 голосов
/ 18 апреля 2019
def login(request):
    if request.method=='POST':
        user = auth.authenticate(username=request.POST['username'],password=request.POST['password1'])
        if user is not None:
            auth.login(request,user)
            return redirect('../')

        else:
            return render(request,'login.html',{'error':'username or password is wrong'})

    else:
        return render(request,'login.html')

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

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

Например:

forms.py

class LoginForm(forms.Form):
    username = forms.CharField(label='Your Email/Username', max_length=100)
    password = forms.CharField(label='Your Password', max_length=100)

Затем в вашем views.py вы можете определить функцию вида как:

views.py

from .forms import LoginForm
def login(request):
    if request.method == "POST":
        if form.is_valid:
            user = auth.authenticate(username=request.POST['username'],password=request.POST['password1'])
            if user is not None:
                auth.login(request,user)
                return redirect('../')
            else:
                return render(request,'login.html',{'form': form, 'error':'username or password is wrong'})
    else:
        form = LoginForm()
        return render(request,'login.html', {'form': form})

Затем в вашем шаблоне вы можете отобразить форму как:

<form method="post">
{% csrf_token %}
    {{ form.as_p }} <--render the form in other ways as preferred-->
{% for error in form.errors %} //for displaying the fields where errors have occured
    {{ error }}
{% endfor %}
<button type="submit">Login</button>
</form>
0 голосов
/ 18 апреля 2019

вы можете использовать встроенный django loginview: -

в urls.py

from django.contrib.auth.views import LoginView

urlpatterns =[
path('login/' , LoginView.as_view(template_name='login.html') , name ='login') 
 ]

в ur login.html

  <h1> login page!! </h1>
   <form method='POST'>
   {% csrf_token %}
   {{ form.as_p }}
   <input type='submit' value='Login'>
   </form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...