不同视图中的相同功能 - Django

时间:2014-09-28 09:31:23

标签: django

我最近开始学习Django,并且遵循Django网站教程中给出的代码示例。因此,我创建了一个网站' mysite'和一个app' books'在该网站。因此,有两个views.py'结果目录结构中的文件 - 一个在' mysite'文件夹和书籍中的一个'文件夹,只有一个' urls.py'文件 - 在' mysite'仅文件夹。我的问题如下 - 如何避免我在两个views.py'中创建的函数的名称冲突。文件?如果两个文件中有两个具有相同名称的函数,Django如何解决在' urls.py'中为给定的URL模式调用哪个函数?文件?

以下是我的目录结构:

C:.
│   manage.py
│
├───books
│       admin.py
│       admin.pyc
│       models.py
│       models.pyc
│       tests.py
│       views.py
│       views.pyc
│       __init__.py
│       __init__.pyc
│
└───mysite
        base.html
        base_blog.html
        base_welcome.html
        currdate.html
        settings.py
        settings.pyc
        urls.py
        urls.pyc
        views.py
        views.pyc
        wsgi.py
        wsgi.pyc
        __init__.py
        __init__.pyc

一个额外的相关问题 - 如果我有多个项目(例如' mysite')和这些项目中的不同应用程序,我如何区分项目中的URL?我的意思是,目前,网址http://127.0.0.1:8000/hello已映射到“谜底”中的视图功能。项目。如果我现在还有一个项目,比如说“我的新网站”,那么Django如何将网址http://127.0.0.1:8000/hello解析为“mynewsite'”的查看功能怎么办?我希望我的问题很明确。

谢谢, 勒凯什。

1 个答案:

答案 0 :(得分:1)

在python中你可以导入库(在这种情况下像views.py这样的文件)其中一个会导致你所说的名称冲突,即

from books.views import my_view
from mysite.views import my_view

在这种情况下,my_view将被覆盖。但是,您也可以执行以下操作

import books.views
import mysite.views

在这种情况下,要访问导入的视图,您必须使用完整路径,即。即books.views.my_view,因此没有名称冲突。

关于您的其他问题,请考虑以下urls.py内容:

urlpatterns = patterns('',
    url(r'^$', mysite.views.my_view, name='index'),

您可以将其替换为

urlpatterns = patterns('',
    url(r'^$', books.views.my_view, name='index'),