2011-10-11 59 views
3

我有一个奇怪的问题。 基本上,在我的settings.py文件,我有4个变量django设置变量在传递给模板时丢失了

URL_MAIN = 'http://www.mysite' 
URL_JOBS = 'http://jobs.mysite' 
URL_CARS = 'http://cars.mysite' 
URL_HOMES = 'http://homes.mysite' 

在我的views.py我有通常的:

from settings import * 

我有6次打电话给他们,只是把他们送回模板内上下文:

class CarsHp(TemplateView): 
    ... 

class JobsHp(TemplateView): 
    ... 

class HomesHp(TemplateView): 
    ... 

class CarsList(TemplateView): 
    ... 

class JobsList(TemplateView): 
    ... 

class HomesList(TemplateView): 
    ... 

正在被由

称为在网址

所有的这些观点具有相同的语句:

context['URL_MAIN'] = URL_MAIN 
... 

所有4个变量。

在模板中,我正确地获取了其中的所有4个,除了URL_MAIN,其中2个6个视图中的“丢失”。我使用古典{{URL_MAIN}}访问它们,并且我一直在尝试一切,从移动到重命名,但仍然没有显示URL_MAIN(我得到空字符串,没有错误类型)后,从2的意见。所有功能基本上共享相同的代码(查询和数据处理部分除外),并且这些设置的变量正在分配并返回。没有任何类型的检查或修改。我一直在尝试与Django的壳,我总是可以检索它们。

我们正在通过apache提供服务,并为robots.txt文件和静态文件提供了一些proxypassing配置。不严重”。

我没有发布全部6个视图源代码,只是因为它们很长,相关部分都在上面描述。但我可以发布他们,如果你想,我只是不知道它是否真的有用,因为我已经三重检查所有的名称冲突或双重声明或不正确的使用来源。

感谢所有提前,这是非常惊人的我的大脑

回答

5

理想情况下,你应该使用模板的上下文处理器此。它会减少你的代码,并让你看到问题的确切位置。

请在您的项目一个名为urls_context_processor.py(或类似),并把你的变量有:

def common_urls(request): 
    return { 
     'URL_MAIN': "http://...", 
     'URL_JOBS': "http://...", 
     'URL_CARS': "http://...", 
     'URL_HOME': "http://...", 
    } 

,并在你的settings.py

TEMPLATE_CONTEXT_PROCESSORS = = (
     .... 
     'my_project.urls_context_processor.common_urls',) 

现在的网址变量将在您的所有模板中自动提供,并且您不需要将它们硬编码到每个视图中。

+0

好的,谢谢,我正在尽快尝试这个解决方案! –

相关问题