python - 找不到 'login'的反向按钮。 'login'不是有效的 View 函数或模式名称

标签 python django error-handling

它给出错误:找不到“登录”的反向。 “登录”不是有效的 View 功能或模式名称。

它说NoReverseMatch。

尝试用account:login替换url登录,但是没有用。

{% if user.is_authenticated %}
   <form id="logoutForm" action="/logout/" method="post" class="navbar-right">
     {% csrf_token %}
    <ul class="nav navbar-nav navbar-right">
        <li><span class="navbar-brand">Hello {{ user.username }}!</span></li>
        <li><a href="javascript:document.getElementById('logoutForm').submit()">Log off</a></li>
    </ul>
  </form>

{% else %}

  <ul class="nav navbar-nav navbar-right">
    <li><a href="{% url 'login' %}">Log in</a></li>
  </ul>

{% endif %}

我的帐户应用网址文件:
urlpatterns = [
    path('login/',
         LoginView.as_view
         (
             template_name='accounts/login.html',
             authentication_form=forms.BootstrapAuthenticationForm,
             extra_context=
             {
                 'title': 'Log in',
                 'year' : datetime.now().year,
             }
         ),
         name='login'),
    path('logout/', LogoutView.as_view(next_page='/'), name='logout'),
    path('signup/', views.signup, name='signup'),
    ]

我的主要网址文件:
urlpatterns = [
    path('', views.home, name='home'),
    path('', include('accounts.urls')),
    path('contact/', views.contact, name='contact'),
    path('about/', views.about, name='about'),
    path('admin/', admin.site.urls),
]

我不知道该怎么办,尝试了很多东西。

最佳答案

account/urls.py 文件应添加 auth_views :

from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/',
         auth_views.LoginView.as_view
         (
             template_name='accounts/login.html',
             authentication_form=forms.BootstrapAuthenticationForm,
             extra_context=
             {
                 'title': 'Log in',
                 'year' : datetime.now().year,
             }
         ),
         name='login'),
    path('logout/', auth_views.LogoutView.as_view(next_page='/'), name='logout'),
    path('signup/', views.signup, name='signup'),
    ]

请对登录网址使用以下代码。实际上,您对两个不同的URL使用相同的路由:
urlpatterns = [
    path('', views.home, name='home'),
    path('accounts/', include('accounts.urls')),
    path('contact/', views.contact, name='contact'),
    path('about/', views.about, name='about'),
    path('admin/', admin.site.urls),
]

关于python - 找不到 'login'的反向按钮。 'login'不是有效的 View 函数或模式名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59801689/

相关文章:

python - 构建游戏编程代码的设计模式

python - pyspark:网格搜索为空后获取最佳模型的参数{}

python - 运行基于 Django 的 MongoDB Web 管理员时出错

python - Django objects.filter 不更新字段但 objects.get 是

php - 在不更改 php.ini 的情况下输出 PHP 错误的 STDERR

tomcat8 - 400 的自定义错误页面

Java 等同于未捕获异常的 coredump

python - 编辑列表中每第 N 项的值

python - 无法使用 Django Haystack : 'Connection refused' 重建索引 elasticsearch

django - 创建实例时如何更新 ManyToManyField