Вход в Django перенаправляет на страницу сброса пароля вместо страницы профиля - PullRequest
1 голос
/ 24 июня 2019

Я новичок в django и создаю свое первое приложение. На этом этапе я пытаюсь войти в систему с помощью django без использования пользовательской функции просмотра. К сожалению, после создания пользователей на странице администратора django и попытки входа в систему я обнаружил, что кнопка входа перенаправляет меня на страницу сброса пароля, введя недействительную ссылку. Я не знаю, была ли авторизация неудачной или успешной. Я искал много похожих проблем, но никогда не сталкивался с такой же ситуацией.

URL

from django.conf.urls.static import static

urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

#Add Django site authentication urls (for login, logout, password management)
urlpatterns += [
    path('accounts/', include('django.contrib.auth.urls')),
    path('accounts/login/', include('django.contrib.auth.urls'), name = 'login'),
    path('accounts/logout/', include('django.contrib.auth.urls'), name = 'logout'),
    path('accounts/password_change/', include('django.contrib.auth.urls'), name = 'password_change'),
    path('accounts/password_change/done/', include('django.contrib.auth.urls'), name = 'password_change_done'),
    path('accounts/password_reset/', include('django.contrib.auth.urls'), name = 'password_reset'),
    path('accounts/password_reset/done/', include('django.contrib.auth.urls'), name = 'password_reset_done'),
    path('accounts/reset/<uidb64>/<token>/', include('django.contrib.auth.urls'), name = 'password_reset_confirm'),
    path('accounts/reset/done/', include('django.contrib.auth.urls'),name='password_reset_complete')
]

HTML-база

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">

    {% block title %}
    <title>Acceuil</title>
    {% endblock %}

    {% load static %}

    <link rel="stylesheet" type=text/css href="{% static 'css/bootstrap.css' %}">
    <link rel="stylesheet" href="{% static 'css/menu.css' %}">
    <link rel="stylesheet"  type=text/css href="{% static 'css/style.css' %}"/>
</head>

<body>
    <section id="global">

{% block nav%}
<!--
    <nav class="navbar navbar-dark bg-primary  navbar-expand-md">
        <div id = "navigation_div" class="container-fluid">
            <a class="navbar-brand" href="#">Monkyro</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mon_menu"
                    aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="mon_menu">
                <ul class="navbar-nav ml-auto">
                    <li class="nav-item"><a class="nav-link" href="{% url 'index'%}" >Acceuil</a></li>
                    <li class="nav-item"><a class="nav-link" href= "{% url 'registerpage' %}" >S'inscrire </a></li>
                    <li class="nav-item"><a class="nav-link" href ="{% url 'doctorlistpage'%}">Docteurs</a></li>
                    <li class="nav-item"><a class="nav-link" href= "{% url 'tariffpage' %}" >Tarifs</a></li>
                    <li class="nav-item"><a class="nav-link" href= "{% url 'reviewpage' %}" >Avis</a></li>
                    <li class="nav-item"><a class="nav-link" href= "{% url 'myloginpage' %}"  >Se connecter</a></li>
                </ul>
            </div>
        </div>
    </nav>
-->
{% endblock %}

        <section class="page_top">
            <div id="centre_1">
            <h3><b>MonKyro vous propose des soins chiropratiques sur mesure.</b></h3>,<br>
            </div>
        </section>

        <section id="page_center">

            {% block content %}

            {%endblock %}
        </section>

        <section id="page_footer">
            <footer>
                <p>Myapp copyright 2019</p>
            </footer>
        </section>
    </section>

<script src="js/jquery-3.4.1.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>

</body>
</html>

расширение html

{% extends "base_generic_lite01.html" %}

{% block nav %}
<nav class="navbar navbar-dark bg-primary  navbar-expand-md">
        <div id = "navigation_div" class="container-fluid">
            <a class="navbar-brand" href="#">Monkyro</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#mon_menu"
                    aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="mon_menu">
                <ul class="navbar-nav ml-auto">
                    <li class="nav-item"><a class="nav-link" href="{% url 'index'%}" >Acceuil</a></li>
                    <li class="nav-item"><a class="nav-link" href= "{% url 'registerpage' %}" >S'inscrire </a></li>
                    <li class="nav-item"><a class="nav-link" href ="{% url 'doctorlistpage'%}">Docteurs</a></li>
                    <li class="nav-item"><a class="nav-link" href= "{% url 'tariffpage' %}" >Tarifs</a></li>
                    <li class="nav-item"><a class="nav-link" href= "{% url 'reviewpage' %}" >Avis</a></li>
                    <li class="nav-item active"><a class="nav-link" href= "{% url 'myloginpage' %}"  >Se connecter</a></li>
                </ul>
            </div>
        </div>
    </nav>
{% endblock%}

{% block content%}
{% if form.errors %}
  <p>Your username and password didn't match. Please try again.</p>
{% endif %}

{% if next %}
  {% if user.is_authenticated %}
    <p>Your account doesn't have access to this page. To proceed,
    please login with an account that has access.</p>
  {% else %}
    <p>Please login to see this page.</p>
  {% endif %}
{% endif %}

<form method="post" action="{% url 'login' %}" >
{% csrf_token %}
<table>

<tr>
  <td>{{ form.username.label_tag }}</td>
  <td>{{ form.username }}</td>
</tr>

<tr>
  <td>{{ form.password.label_tag }}</td>
  <td>{{ form.password }}</td>
</tr>
</table>

<input type="submit" value="login" />
<input type="hidden" name="next" value="{{next}}" />
</form>

{# Assumes you setup the password_reset view in your URLconf #}
<p><a href="{% url 'password_reset' %}">Lost password?</a></p>

{% endblock %}

Я ожидал перенаправления на учетные записи / профиль / страницу, но меня перенаправили на страницу сброса пароля.

Спасибо, что приняли мой вопрос к сведению.

Ответы [ 2 ]

1 голос
/ 24 июня 2019
you need to add two lines in your Settings.py
LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = '/' or name of your homepage where you want to redirect
0 голосов
/ 24 июня 2019

Согласно этому documentation, если вы хотите использовать представления по умолчанию для аутентификации django, то вам просто нужно поставить это:

urlpatterns += [
    path('accounts/', include('django.contrib.auth.urls')), 
    # You can remove rest of the paths from urlpatterns
]

Теперь, если вы хотите переопределить какое-либо конкретное представление, вы можете переопределить представления по умолчанию, например:

from django.contrib.auth import views as auth_views


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