【问题标题】:django_registration urls and routing confusiondjango_registration url 和路由混淆
【发布时间】:2016-09-17 01:44:32
【问题描述】:

我是 Django 新手,所以我正在学习它是如何工作的,我得到了一个相当不错的网络应用程序,并且我正在使用 django_registration 插件。让我感到困惑的是模板存在于根站点 /registration 中,我可以从这样的 URL 访问它们:

<a href="{% url 'registration_register' %}">

所以我认为我可以对注册中的所有内容都这样做,但事实并非如此,因为这不起作用:

<a href="{% url 'registration_login' %}">

混淆了它是关于一个有效的,而不是另一个(我有点来自rails背景,我可以看到那里的路线)这个我学习有困难,这是在经历了为什么一些网址之后我的应用程序使用带有分号的 mysite:polls 等(我想我明白了) 只是对那些不在应用命名空间下的应用感到困惑。

或者registration_login 是否有效,而我真的只是在模板设置或urls.py 上做错了什么?只是想了解一些背景。

【问题讨论】:

    标签: django django-urls django-registration


    【解决方案1】:

    编辑:刚刚看到是 login 网址给您带来了问题。我会留下关于registration_register的其他部分以备将来参考,以防它碰巧有用。

    登录网址位于here,名为auth_login

    registration_register位:

    您是否在 settings.py 文件中将 INCLUDE_REGISTER_URL 设置为 False?

    检查位于here 的网址的来源,您将看到以下sn-p

    if getattr(settings, 'INCLUDE_REGISTER_URL', True): #Defaults to True
        urlpatterns += [
            url(r'^register/$',
                RegistrationView.as_view(),
                name='registration_register'),
        ]
    

    【讨论】:

      【解决方案2】:

      在 Django 中,当您使用 {% url 'registration_login' %} 之类的内容时,您指的是给定应用程序的 urls 文件中的路由。如果 url 路由具有 name=registration_login,则可以正常工作。

      所以,您提到这是您访问模板的方式,但实际上只是您在 URL 中指定路由的方式,而不是模板。然后路由指定要加载的视图,然后设置将使用的模板 HTMl 文件。

      因此,在上面的示例中,您需要查看该应用的 URL 文件(或文档),以了解他们为使用 {% url %} 的路线提供的名称。如果没有给出名称,您只需要使用实际的 url “/login/”(或其他任何名称),就像在任何其他锚标记中一样。

      我不确定您使用的是哪个 django_registration 应用程序,但 Django 有一个随附的应用程序:django.contrib.auth,您可以使用它。它的 urls 文件,你会发现登录 URLs 路由被命名为“login”,所以你可以使用 {% url "login" %}。

      查看文档了解更多信息:https://docs.djangoproject.com/en/1.9/topics/auth/default/

      哦,关于您在某些情况下引用的命名空间(即 mysite:polls)的问题:这是在 urls 文件中使用 app_name 设置的内容。因此,如果投票应用程序在 urls.py 中有 app_name=polls,那么您可以说 {% url 'polls:vote' %} 例如。如果您正在使用许多应用程序,这很好用,在完整的 Django 站点中几乎总是这样。

      {% url %} 模板标签非常适合使用,因为如果您的网址发生更改,您不必更改整个网站的链接。但是,就像我上面提到的那样,您始终可以像在标准 HTML 锚点 href 中一样直接引用 url。您不必使用 {% url %}

      有关更多信息,请查看:https://docs.djangoproject.com/en/1.9/topics/http/urls/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-04
        • 1970-01-01
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多