13

我有以下结构(Django 1.4):

containing_dir/
    myproject/
        myapp1/
        myapp2/
        myapp3/

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

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

在 myproject.settings 我定义:

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

在 myapp1.urls.py 我定义:

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

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

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

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

Exception Value: No module named myapp1

我认为从 withing myapp1.urls

有什么帮助吗?谢谢

4

6 回答 6

7

你必须有一个

__init__.py

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

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

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

于 2013-12-04T19:32:58.737 回答
4

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

INSTALLED_APPS = (   
[..]
'myapp1',
'myapp2',
'myapp3',
)
于 2015-04-01T06:40:59.140 回答
1

尝试:

urlpatterns = [
    ...
    url(r'^app_name/', include('app_name.urls', namespace='project_name'))
    ...
]
于 2017-09-02T17:40:53.750 回答
0

ROOT_URLCONF需要指点吗myproject.urls

如果您将应用程序放置在其中,则myproject需要使用正确的视图前缀

urlpatterns = patterns('myproject.myapp1',
...
于 2013-04-08T17:22:18.797 回答
0

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

于 2018-06-27T11:34:06.640 回答
0

最近,在新版本的 Django 中引入了path(route, view, kwargs=None, name=None)代替旧的url()正则表达式模式。

您必须__init__.py在 app 文件夹中有文件才能将其识别为 django 项目的包,即 myproject

必须更新 Django 项目,即 myproject urls.py 文件以包含以下示例:

path('', include('django_app.urls'))
path('url_extension/', include('django_another_app.urls'))

上面的示例中包含两个应用程序 url。一种是没有在 url 中添加任何路径扩展名,另一种是在当前 url 中添加路径扩展名。

另外,不要忘记INSTALLED_APPSsettings.py文件中添加 django 应用程序,以通过 django 项目将其识别为应用程序,如下所示。

ROOT_URLCONF = 'myproject.urls'
INSTALLED_APPS = [
...
django_app,
django_another_app
...
]

有关更多信息,请查看文档

于 2022-02-12T07:18:06.020 回答