gpt4 book ai didi

django 设置变量在传递给模板时丢失

转载 作者:行者123 更新时间:2023-12-01 11:55:23 25 4
gpt4 key购买 nike

我有一个奇怪的问题。基本上,在我的 settings.py 文件中我有 4 个变量

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 个 View 调用它们并将它们返回到上下文中的模板:

class CarsHp(TemplateView):
...

class JobsHp(TemplateView):
...

class HomesHp(TemplateView):
...

class CarsList(TemplateView):
...

class JobsList(TemplateView):
...

class HomesList(TemplateView):
...

它们在 url 中被调用

CarsList.as_view()
...

所有这些 View 都有相同的声明:

context['URL_MAIN'] = URL_MAIN
...

对于所有 4 个变量。

在模板中,除了 URL_MAIN 之外,我正确地获取了所有 4 个 View ,它在这 6 个 View 中的 2 个 View 中“丢失”了。我正在使用经典的 {{ URL_MAIN }} 访问它们并且我一直在尝试一切,从移动到重命名,但是在从 2 提供服务后 URL_MAIN 仍然没有出现(我得到空字符串,没有排序错误)这些意见。所有功能基本上共享相同的代码(查询和数据处理部分除外),并且这些设置的变量只是被分配和返回。没有任何形式的检查或修改。我一直在尝试使用 django 的 shell,我总能找回它们。

我们由 apache 提供服务,其中包含一些针对 robots.txt 文件和静态文件的代理传递配置。没什么“严重”的。

我没有发布所有 6 个 View 的源代码只是因为它们很长并且相关部分都在上面进行了描述。但如果你愿意,我可以发布它们,我只是不知道它是否真的有用,因为我已经对所有来源进行了三次检查,以了解名称冲突、双重声明或不正确的使用。

先谢谢大家了,这真是让我大吃一惊

最佳答案

理想情况下,您应该为此使用模板上下文处理器。它会减少你的代码,让你准确地看到问题出在哪里。

在您的项目中创建一个名为 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',)

现在 urls 变量将在您的所有模板中自动可用,您无需将它们硬编码到每个 View 中。

关于django 设置变量在传递给模板时丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7733456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com