Вход в Django не работает, как это исправить? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть форма входа в мой проект.Когда я пишу правильное имя пользователя и пароль, он не публикует мой запрос, и область моего браузера выглядит так: http://127.0.0.1:8000/user/login/?csrfmiddlewaretoken=EukLSCRC5B25iBrDXqVsQ7iyF2FUUhgrldri2MIrb3IM8f4dMngo66tciJkmfNYt&username=admin&password=123 (потому что мое имя пользователя: admin, pass: 123)

Я пытался изменить "формуМетод "POST для публикации в шаблоне входа в HTML, но не работает.И я удалил csrf_token, но на самом деле снова не работает.

forms.py

class LoginForm(forms.Form):
    username = forms.CharField(label = "Username")
    password = forms.CharField(label = "Password", widget=forms.PasswordInput)

views.py

def loginUser(request):
    form = LoginForm(request.POST or None)
    context = {

        "form": form

    }

    if form.is_valid():
        username = form.cleaned_data.get("username")
        password = form.cleaned_data.get("password")

        user = authenticate(username = username, password=password)

        if user is None:
            messages.info(request,"Username or Password is incorrect! Try again.")
            return render(request,"login.html", context)

        messages.success(request,"Login successful! Welcome honey.")
        login(request,user)
        return redirect("index")

    return render(request,"login.html",context)

urls.py

app_name = "user"

urlpatterns = [
    path('register/',views.register, name ="register"),
    path('login/',views.loginUser, name ="login"),
    path('logout/',views.logoutUser, name ="logout"),

]

login.html

{% extends "layout.html" %}

{% block body %}

{% load crispy_forms_tags %}



<div class="row">
    <div class="col-md-6 offset-md-3">

        <h3>Login</h3>
        <hr>
        <form method = "post">
            {% csrf_token %}
            {{form|crispy}}

            <button type = "submit" class = "btn btn-danger">Sign In</button>

            </form>


    </div>
  </div>

{% endblock  %}

В области браузера отображается: http://127.0.0.1:8000/user/login/?csrfmiddlewaretoken=EukLSCRC5B25iBrDXqVsQ7iyF2FUUhgrldri2MIrb3IM8f4dMngo66tciJkmfNYt&username=admin&password=123 (потому что мое имя пользователя: admin, пароль: 123)

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Можете ли вы добавить действие в форме?Ваша форма не имеет действия.

<form method = "post" action="{% url 'user:login' %}>
0 голосов
/ 06 февраля 2019

Не используйте form.cleaned_data, Используйте:

request.POST.get("username","")

То же самое для пароля!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...