0

由于以下从视图映射 Django Url 的方法在 Django 1.9 及更高版本中已被贬低

url(r'^contact/$', 'newsletter.views.contact', name='contact'),

url(r'^about/$', 'home.views.about', name='about'),

这就是目前的情况

从时事通讯导入视图'

url(r'^about/$', 'views.about', name='about'),

我如何为 2 个不同的应用程序视图映射我的 url

从家庭导入视图

从时事通讯导入视图

url(r'^home/$', 'views.home', name='home'), #located in home

url(r'^about/$', 'views.about', name='about'), #located in newsletter

像我上面所做的映射会导致错误,所以我需要帮助。Django 新手

4

3 回答 3

1

我不明白您所说的使用完全限定的模块名称是什么意思,因为它是一个核心 python 结构。但是您可以通过使用“import as”语句将它们绑定到不同的别名来管理两个包含具有相同名称的子模块的不同模块。

例子:

from home import views as home_view
from newsletter import views as news_view

然后,您可以使用别名home_view并在整个声明的命名空间news_view中引用每个模块而不是,。views

您可以在此处查看Python 文档中的 import 语句语法:

如果请求的模块被成功检索,它将通过以下三种方式之一在本地命名空间中可用:

  • 如果模块名后面跟着as,那么as后面的名字直接绑定到导入的模块上。
  • 如果没有指定其他名称,并且被导入的模块是顶级模块,则模块的名称绑定在本地命名空间中作为对导入模块的引用
  • 如果导入的模块不是顶级模块,则包含该模块的顶级包的名称绑定在本地命名空间中,作为对顶级包的引用。导入的模块必须使用其完整的限定名而不是直接访问
于 2016-08-20T13:01:01.730 回答
0

作为替代方案,您只能导入视图函数:

from home.views import home
from newsletter.views import about

urlpatterns = [
    url(r'^home/$', home, name='home'),
    url(r'^about/$', about, name='about'),
]
于 2016-08-20T19:00:16.550 回答
0

尝试:

from home import views as home_views

from newsletter import views

url(r'^home/$', 'home_views.home', name='home'), #located in home

url(r'^about/$', 'views.about', name='about'), #located in newsletter
于 2016-08-20T11:38:53.710 回答