好的,所以经过更多调查后,我找到了一个可能的解决方案。在等待答案时将其留在这里以供参考。
我没有将包 URL 作为模块加载,而是使用自定义函数将 Django 项目的变量传递给包 URL,因此也传递给视图。
所以在项目 urls.py 中,而不是:
url(r'^package/$', include('package.urls'))
我用
url(r'^package/$', obtain_package_urls(custom_content))
其中 gain_package_urls() 是包中的一个函数:
def obtain_package_urls(custom_content):
urlpatterns = patterns('',
url(r'^url1$', view1, {'custom_content': custom_content},
url(r'^url2$', view2, {'custom_content': custom_content},
)
return (urlpatterns, None, None)
目标是使用这个函数,而不是包含 Django 的静态 URL-view 映射的 include 函数,该函数返回一个动态 URL-view 映射以及视图中包含的自定义内容。
因此,就我最终做的算法而言,这是有效的:
#Django project settings.py
obtain_algorithm_list():
return Algorithm.objects.all()
#Django project urls.py
from project.settings import obtain_algorithm_list
urlpatterns = ...
...
url(r'^package/$', obtain_package_urls(obtain_algorithm_list())
...
#In the package urls.py
urlpatterns = ...
url(r'^view1/$', view1, {'algorithms': algorithms},
...
#And then in each package view
def view(request, algorithms=[]):
...
use_for_something(algorithms)