django 1.10 一个带有链接的应用页面重定向到另一个应用页面

Posted

技术标签:

【中文标题】django 1.10 一个带有链接的应用页面重定向到另一个应用页面【英文标题】:django 1.10 one app page with a link redirect to another app page 【发布时间】:2017-05-18 06:11:06 【问题描述】:

我是 django 服务器的新手,正在尝试构建一个简单的用户注册网站。这是问题所在,我用 index.html 作为主页创建了自己的应用程序。我还使用了另一个用户注册应用程序:

https://github.com/pennersr/django-allauth/tree/master/allauth

我试图通过“注册”链接将该应用添加到我的主页。基本上,帐户部分,理想情况下,链接可以指向:http://127.0.0.1:8000/accounts/login/

但是,当我运行服务器时,它给了我错误:

 Reverse for 'base' with arguments '()' and keyword arguments '' not found. 0 pattern(s) tried: []

服务器结果:

这两个应用程序单独运行良好,但是当我尝试将链接添加到我的主页时,出现错误。

我的第一个应用程序中 index.html 文件中的相关代码:

<li><a href="% url 'allauth:base' %">Log In</a></li>

我的项目中index.html的完整路径是:

 project/app1/templates/app1/index.html

我的项目中base.html的完整路径是:

 project/allauth/templates/base.html

我知道我可能需要在我的第一个应用程序的 urls.py 文件中添加一个 url 行,以及一个显示它的视图,但我该怎么做呢?任何人都可以帮我解决这个问题,非常感谢。

【问题讨论】:

您必须使用其他注册应用程序吗?我的意思是使用原生 django 身份验证系统很容易。 我认为您在 url 设置中的 all-auth include 中缺少 namespace 关键字。 @Bobby,因为我主要需要这个应用程序中的电子邮件确认和社交帐户功能,但是,我应该先尝试 django auth 系统以更好地理解这个概念。 @gitblame,我尝试通过为每个应用程序的 urls.py 指定一个特定的 app_name 来实现这一点,但它会导致其他反向问题。 【参考方案1】:

&lt;li&gt;&lt;a href="% url 'allauth:base' %"&gt;Log In&lt;/a&gt;&lt;/li&gt;

此行使用 URL 反转,'allauth:base' 是 URL 模式,allauth 前缀是命名空间,base 是命名 URL。您必须首先在 urls.py 中定义命名空间和命名 URL。

在项目的 urls.py 文件中定义您的命名空间,如下所示:

from django.conf.urls import include, url

urlpatterns = [
    url(r'^author-polls/', include('polls.urls', namespace='author-polls')),
    url(r'^publisher-polls/', include('polls.urls', namespace='publisher-polls')),
]

在应用程序的 urls.py 文件中定义您的命名 URL,如下所示:

from django.conf.urls import url

from . import views

app_name = 'polls'
urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),
    ...
]

您需要的所有帮助都在此文档中:Naming URL patterns

【讨论】:

以上是关于django 1.10 一个带有链接的应用页面重定向到另一个应用页面的主要内容,如果未能解决你的问题,请参考以下文章

Django 1.10中文文档-第一个应用Part2-模型和管理站点

带有plist链接的href无法在python应用程序中解析

django 1.10 已安装应用程序列表

django网页问题 url自动添加了斜杠

Django 1.10 - 如何加载初始用户

获取服务器响应 (400):来自 Pypi 的无效分类器“Framework :: Django :: 1.10”