Python Django - 包括应用程序网址

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/15885030/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 21:16:04  来源:igfitidea点击:

Django - include app urls

pythondjangodjango-urls

提问by pistacchio

I have the following structure (Django 1.4):

我有以下结构(Django 1.4):

containing_dir/
    myproject/
        myapp1/
        myapp2/
        myapp3/

myproject, myapp1, myapp2, and myapp3 all have init.py, so they're all modules.

myproject、myapp1、myapp2 和 myapp3 都有init.py,所以它们都是模块。

In manage.py (under containing_dir) I have os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

在 manage.py (在 contains_dir 下)我有 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings")

in myproject.settings i define:

在 myproject.settings 我定义:

[..]
ROOT_URLCONF = 'myproject.urls'
INSTALLED_APPS = (   
    [..]
    'myproject.myapp1',
    'myproject.myapp2',
    'myproject.myapp3',
)
[..]

In myapp1.urls.py I define:

在 myapp1.urls.py 我定义:

urlpatterns = patterns('myapp1',
    url(r'^agent/$', 'views.agent',    name='agent')
)

and I try to import it in myproject.urls I try to import myapp1 urls like this:

我尝试将它导入 myproject.urls 我尝试像这样导入 myapp1 url:

(r'^myapp1/', include('myproject.myapp1.urls'))

but whenever I try lo load localhost:8000/myapp1/agentI get

但是每当我尝试加载时,localhost:8000/myapp1/agent我都会得到

Exception Value: No module named myapp1

I think thrown from withing myapp1.urls

我认为从 with myapp1.urls 抛出

Any help? thanks

有什么帮助吗?谢谢

回答by Ngenator

Does ROOT_URLCONFneed to point to myproject.urls?

请问ROOT_URLCONF需要点myproject.urls

If you place your apps inside of myprojectyou need to use the proper view prefix.

如果你把你的应用程序放在里面,myproject你需要使用正确的视图前缀

urlpatterns = patterns('myproject.myapp1',
...

回答by Raydel Miranda

You must have a

你必须有一个

__init__.py

file inside your "myproject" directory. When you say:

“myproject”目录中的文件。当你说:

(r'^myapp1/', include('myproject.myapp1.urls'))

you are saying "myproject" (as well as myapp1) is a python packege.

你是说“myproject”(以及myapp1)是一个python包。

回答by Tejas

In myproject.settings make following changes :

在 myproject.settings 中进行以下更改:

INSTALLED_APPS = (   
[..]
'myapp1',
'myapp2',
'myapp3',
)

回答by Vaishnav Mhetre

Try:

尝试:

urlpatterns = [
    ...
    url(r'^app_name/', include('app_name.urls', namespace='project_name'))
    ...
]

回答by vinoth10

To solve this issue just select "myproject" directory in PyCharm and set this as a source root. Your project don't know from which root it has to search for given app. It fixed the issue for me. Thank you.

要解决此问题,只需在 PyCharm 中选择“myproject”目录并将其设置为源根目录。您的项目不知道它必须从哪个根搜索给定的应用程序。它为我解决了这个问题。谢谢你。