1

我在导入另一个urlpatterns.

python manage.py shell->工作正常,但是当我尝试从以下位置导入它时from bar.urls import urlpatternsDjango 找不到:“没有名为 bar.urls 的模块”。barfoo/foo/urls.py

tree ~/workdir/foo

foo
├── foo
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── local_db
│   │   └── foo.db
│   ├── settings.py
│   ├── urls.py
│   ├── wsgi.py
├── __init__.py
├── manage.py
├── bar
│   ├── __init__.py
│   ├── models.py
│   ├── baz
│   │   ├── __init__.py
│   │   ├── __init__.pyc
│   │   ├── baz_interface.py
│   │   ├── test.py
│   ├── templates
│   │   └── index.html
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── README.md
└── requirements.txt

5 directories, 28 files

foo/urls.py

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
        (r'^test/', include('foo.bar.urls')),
)

# this will fail too :
# 1.
# from foo.bar.urls import urlpatterns as test
# urlpatterns += test
# 2.
# from bar.urls import urlpatterns as test
# urlpatterns += test
# 3.
#urlpatterns = patterns('',
#    (r'^test/', include('bar.urls')),
#)

bar/urls.py

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
     url(r'^$', 'foo.bar.views.viewname', name='viewname'),
)

Django 1.4.3Python 2.7.3virtualenv 中运行。
bar在我的INSTALLED_APPS.
~/workdir/foo/在我的 python 路径中。

我怎样才能urlpattern从工作中导入foo/foo/urls.py

谢谢你。

4

2 回答 2

4

bar/urls.py应该看起来像:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('bar.views',
    url(r'^$', 'viewname', name='viewname'),
)

foo/urls.py的是:

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^test/', include('bar.urls')),
)
于 2012-12-20T16:41:02.410 回答
0

如果您在应用程序启动后检查sys.path变量,您将看到列表中的第一个路径是:foo- 根目录。如果我理解你的权利,你可以像这样的路径

   sys.path.insert(0, '..') 

这是非常糟糕的解决方案,更好的是:

   PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))   
   sys.path.insert(0, os.path.join(PROJECT_ROOT, '..')

最好的解决方案是在你的 'sfoo之上再创建一个目录。foo项目为:

python foo/manage.py runserver
于 2012-12-20T16:31:02.707 回答