>source

저는 Django를 처음 사용하고 사용자 암호 변경 페이지를 만들고 있습니다. 그러나 나는 계속 NoReverseMatch 내가 의심하는 오류는 내 app name 그러나 나는 해결책을 찾기 위해 인터넷 검색을하는 데 몇 시간을 보낸 후에도 해결할 수 없습니다.

내 urls.py 파일 :

from os import name
from django.urls import path
from account import views
from django.contrib.auth import views as auth_views     # Import Django built-in authentication views
app_name    = 'account'
urlpatterns = [
    path('test/', views.test_login, name='test'),
    path('login/', auth_views.LoginView.as_view(), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
    path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
    path('password_change/', auth_views.PasswordChangeView.as_view(), name='password_change'),
]

내 settings.py :

# Login Logic
LOGIN_REDIRECT_URL      = 'account:test'    # Tells Django which URL to redirect user to after a successful login if no next parameter is present in the request
LOGIN_URL               = 'account:login'        # The URL to redirect the user to log in - based on the name in the urls.py
LOGOUT_URL              = 'account:logout'       # The URL to redirect the user to log out - based on the name in the urls.py

내 HTML 파일

{% extends "base.html" %}
{# This is the template to allow user to change their password #}
{% block title %}Change Your Password{% endblock title %}
{% block content %}
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-8">
                <form action="{% url 'account:password_change_done' %}" class="form-signin" method="post">
                {% csrf_token %}
                    <h1 class="h3 mb-3 font-weight-normal text-center">Change your password</h1>
                    <div class="form-group">
                        <label for="old_password">Old Password</label>
                        <input class="form-control" type="password" required id="id_old_password" name="old_password" autocomplete="current-password" placeholder="Old Password" autofocus>
                    </div>
                    <div class="form-group">
                        <label for="new_password1">New Password</label>
                        <input class="form-control" type="password" required id="id_new_password1" name="new_password1" autocomplete="new-password" placeholder="New Password">
                    </div>
                    <div class="form-group">
                        <label for="new_password2">Confirm Password</label>
                        <input class="form-control" type="password" required id="id_new_password2" name="new_password2" autocomplete="new-password" placeholder="Confirm Password">
                    </div>
                    <small class="form-text text-muted">
                        {% if form.new_password1.help_text %}
                            {{ form.new_password1.help_text|safe }}
                        {% endif %}
                    </small>
                    <button type="submit" class="btn btn-primary">Submit</button>
                </form>
                {% if form.errors %}
                    {% for field in form %}
                        {% for error in field.errors %}
                            <div class="alert alert-danger">
                                <strong>{{ error|escape }}</strong>
                            </div>
                        {% endfor %}
                    {% endfor %}
                    {% for error in form.non_field_errors %}
                        <div class="alert alert-danger">
                            <strong>{{ error|escape }}</strong>
                        </div>
                    {% endfor %}
                {% endif %}
            </div>
        </div>
    </div>
{% endblock content %}

많은 도움을 주시면 감사하겠습니다.

참조를 위해 html 파일에 추가했습니다.


  • 답변 # 1

    "NoReverseMatch"오류는 Django가 전달되는 정확한 URL을 처리하고 볼 수 없음을 의미합니다. 대부분의 Django 개발자가 "app_name"을 포함하면 코드를 깔끔하고 쉽게 원하는 URL로 간소화 할 수 있으며 가장 중요한 것은 중복 URL을 방지하는 데 도움이됩니다.

    인스턴스는 앱 계정에 "home"이라는 URL 경로를 가지며 다른 앱에서도 동일한 경로 "home"을 갖게됩니다. app_name을 지정하면 Django가 도움이되며 각 앱에 대한 URL을 포함하여 알 수 있습니다. 어느.

    귀하의 URL은 나에게 정확하며 NoReverseMatch 오류이므로 귀하의 html 또는 view 또는 URL을 호출하는 모든 위치에 있어야합니다.

    HTML에 앱 이름을 포함하고 URL을 호출하는 위치를 봅니다. 이 같은

    {% app_name : name_url %} app_name : name_url보기와 동일합니다.

    항상 app_name과 url 사이에 세미콜론이 있는지 확인하세요. Django에게 어떤 앱의 URL을 알려주는 데 도움이됩니다 !!

  • 이전 entity framework - ASPNET Core에서 EF로 여러 사용자를 관리하는 방법
  • 다음 for loop - 수식을 사용하여 Excel에서 값 검색