【问题标题】:django.urls.exceptions.NoReverseMatch: Reverse for 'sign_up' not found. 'sign_up' is not a valid view function or pattern namedjango.urls.exceptions.NoReverseMatch:找不到“sign_up”的反向。 “sign_up”不是有效的视图函数或模式名称
【发布时间】:2018-03-29 11:20:27
【问题描述】:

Django 版本 1.11.5,

views.py

class SignupPage(CreateView):
    form_class = forms.UserSignupForm
    success_url = reverse_lazy('login')
    template_name = 'signup.html'

网站/urls.py

from django.conf.urls import url
from django.contrib.auth import views as auth_views
from django.contrib.auth.views import LoginView,LogoutView
from . import views

app_name = 'website'

urlpatterns = [

    url(r'^login/', auth_views.LoginView.as_view(template_name='signin_2_w.html'), name='login'),
    url(r'^logout/$', auth_views.LogoutView.as_view(), name='logout'),
    url(r'^signup/', views.SignupPage.as_view(), name='sign_up'),

forms.py

class UserSignupForm(UserCreationForm):

    class Meta:
        fields = ('username','email','password1','password2')


        model = get_user_model()

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.fields['username'].label = "Display Name"
        self.fields['email'].label = "Email Address"
        self.fields['password1'].label = "Password"
        self.fields['password2'].label = "Confirm Password"

项目/urls.py

urlpatterns = [

    url(r'^admin/', admin.site.urls),
    url(r'^$',views.HomePage.as_view(),name='home'),
    url(r'^website/',include('website.urls',namespace='website')),
    url(r'^website/',include('django.contrib.auth.urls')),
    url(r'^website/',views.StreamyePage.as_view(),name='streamye'),
    url(r'^thanks/$',views.ThanksPage.as_view(),name='thanks'),
    url(r'^congrats/$',views.CongratsPage.as_view(),name='congrats'),
    url(r'^aboutus/$',views.AboutusPage.as_view(),name='about_us'),

HTML

<ul class="nav navbar-nav navbar-right">
            {% if user.is_authenticated %}
            <li><a href="{% url 'logout' %}">Logout</a></li>
            {% else %}
             <li><a href="{% url 'login' %}">Login</a></li>
             <li><a href="{% url 'sign_up' %}">Signup</a></li>
            {% endif %}
          </ul>

在上面的代码中,注册页面向我抛出了一个错误——“django.urls.exceptions.NoReverseMatch: Reverse for 'sign_up' not found. 'sign_up' is not a valid view function or pattern name.”

请有人帮我找出我错的地方! 提前致谢!

【问题讨论】:

  • 可能需要website:sign_up

标签: python django


【解决方案1】:

您必须修复模板中的链接以定位 website 网址:

 {% if user.is_authenticated %}
        <li><a href="{% url 'website:logout' %}">Logout</a></li>
        {% else %}
         <li><a href="{% url 'website:login' %}">Login</a></li>
         <li><a href="{% url 'website:sign_up' %}">Signup</a></li>
 {% endif %}

【讨论】:

  • @reno_libiii 因为它有效,请点击绿色勾号接受答案。这将向社区显示此问题已得到回答。
  • 你能再解释一下吗? website 命名空间也适用于 django.contrib.auth.urls
  • 这不是app-urls使用app_name = 'website'的结果吗?
【解决方案2】:

OP 在他们的网站/urls.py 中使用了一个命名空间 - 所以它适用于所有这些。请注意,在那里 OP 定义了登录注销 - 与 a 名称相同

【讨论】:

    【解决方案3】:

    在我的情况下,原因是会话 cookie 由于代码更改而损坏。

    我通过在隐身模式下打开我的应用程序网址解决了这个问题(这将创建新的会话 cookie),

    然后尝试非隐身普通url登录。

    【讨论】:

      猜你喜欢
      • 2020-12-01
      • 2021-05-18
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      相关资源
      最近更新 更多