我有一个包裹:
PersonFactory
此urls/
__init__.py
dev_urls.py
prod_urls.py
个包位于应用urls
和我的主api
中:
urls.py
我知道如果我将其添加到...
url(r'^api/v1/', include('apps.api.urls')),
...
文件:
urls.__init__.py
Django将# __init__.py
from dev_urls import *
包括dev_urls.py
。
但是我想通过在我的设置模块中添加一个变量来实现这种动态:
apps.api.urls
然后在我的# settings
URLS_ENV = 'dev' # This could be 'prod'
:
urls.__init__.py
现在,问题是:我怎么能做如下的事情:
# __init__.py
from django.conf import settings
name = settings.URLS_ENV + '_urls'
这可能吗?
答案 0 :(得分:1)
不,您无法在不更改文件名的情况下更改导入的名称,您可能会考虑的__name__
属性是由导入方式设置的。您需要使用John建议的自定义导入(see here to import *)或修改包含的路径,如下所示
...
url(r'^api/v1/', include('apps.api.urls.' + settings.URLS_ENV + '_urls')),
..
答案 1 :(得分:1)
我找到了这个答案https://stackoverflow.com/a/301139/3945375
这对我有用,现在正在运行:
# urls.__init__.py
from django.conf import settings
mod = settings.URL_ENVIRONMENT + '_urls'
exec 'from %s import *' % mod