Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-设置并使用站点范围的变量,以便在模板中使用_Django_Django Templates_Django Apps - Fatal编程技术网

Django-设置并使用站点范围的变量,以便在模板中使用

Django-设置并使用站点范围的变量,以便在模板中使用,django,django-templates,django-apps,Django,Django Templates,Django Apps,我正在寻找一种方法来设置一些站点范围(或应用程序范围)的变量,例如网站(或应用程序)标题,我将在模板中使用这些变量(例如在我的标题中)。我脑子里有点像WordPress 理想情况下,我希望能够在站点或应用程序级别定义任何类型的属性。例如,对于给定的应用程序,我会: 应用程序 --属性1(例如标题) --属性2(如联系电子邮件) --模型1 ----属性 ----属性 ---- 这意味着“attribute1”对我的应用程序来说是唯一的。然后,我需要一种在模板中使用attribute1值的方法。

我正在寻找一种方法来设置一些站点范围(或应用程序范围)的变量,例如网站(或应用程序)标题,我将在模板中使用这些变量(例如在我的标题中)。我脑子里有点像WordPress

理想情况下,我希望能够在站点或应用程序级别定义任何类型的属性。例如,对于给定的应用程序,我会:

应用程序

--属性1(例如标题)

--属性2(如联系电子邮件)

--模型1

----属性

----属性

----

这意味着“attribute1”对我的应用程序来说是唯一的。然后,我需要一种在模板中使用attribute1值的方法。
我希望我的问题很清楚。

如果您希望在模板中使用这些变量,那么您应该查看。最简单的解决方案是向应用程序或项目中添加一个
context\u processors.py
,然后将此文件的路径添加到设置中的context processors列表中

如果您希望在模板中使用这些变量,则应查看。最简单的解决方案是在应用程序或项目中添加一个
context\u processors.py
,然后将此文件的路径添加到设置中的context processors列表中

我一直使用
context processors
使用站点范围(或应用范围)变量

在应用程序内部创建一个名为
context\u processors.py
的单独文件(不用说,这样命名不是强制性的,只是为了惯例),并且该文件必须定义至少一个函数,该函数接受
请求
参数并返回字典

诸如此类:

# yourapp/context_processors.py
# you can either use <from django.conf import settings> to make use of setting varibales

def static_vars(request):
    return {
        'var1': 'Hello',
        'var2': 'World',
    }
]

现在,您可以在每个模板中使用变量
static\u vars
expose。

我一直使用
上下文处理器使用站点范围(或应用程序范围)变量

在应用程序内部创建一个名为
context\u processors.py
的单独文件(不用说,这样命名不是强制性的,只是为了惯例),并且该文件必须定义至少一个函数,该函数接受
请求
参数并返回字典

诸如此类:

# yourapp/context_processors.py
# you can either use <from django.conf import settings> to make use of setting varibales

def static_vars(request):
    return {
        'var1': 'Hello',
        'var2': 'World',
    }
]


现在,您可以在每个模板中使用变量
static\u vars
expose。

有没有办法将其挂接到admin中?比如,网站管理员可以更改网站的标题(或者修改副标题中的拼写错误),这是有道理的。我按照你的建议做了。但是我无法在管理中看到(即编辑)这些静态变量。我是否必须以某种方式在admin.py中注册它们?很抱歉这些noob评论,我对上下文处理器一无所知。哦!我误解了你先前的评论。所以,您想从管理员内部设置站点范围的变量,对吗?要做到这一点,
上下文处理器将对您毫无帮助。您必须创建一个数据库并在其中存储首选变量。还有一个名为的包可能会帮助您完成这项工作。我会尝试一下。我认为有一种更直接的方法可以使我的网站的主标题可编辑。很抱歉,我不能将你的答案标记为我在这个案例中的正确答案,但也许我没有正确表达我的问题。非常感谢您的帮助。我使用了
django dbsettings
,非常容易使用。如果不使用持久性存储(如数据库),如何通过管理员保存静态变量?另一方面,我认为你应该选择一个被接受的答案,因为它们都回答了你最初的问题。如果你想问另一个问题,请说得更具体一些。有没有办法把这个问题与管理员联系起来?比如,网站管理员可以更改网站的标题(或者修改副标题中的拼写错误),这是有道理的。我按照你的建议做了。但是我无法在管理中看到(即编辑)这些静态变量。我是否必须以某种方式在admin.py中注册它们?很抱歉这些noob评论,我对上下文处理器一无所知。哦!我误解了你先前的评论。所以,您想从管理员内部设置站点范围的变量,对吗?要做到这一点,
上下文处理器将对您毫无帮助。您必须创建一个数据库并在其中存储首选变量。还有一个名为的包可能会帮助您完成这项工作。我会尝试一下。我认为有一种更直接的方法可以使我的网站的主标题可编辑。很抱歉,我不能将你的答案标记为我在这个案例中的正确答案,但也许我没有正确表达我的问题。非常感谢您的帮助。我使用了
django dbsettings
,非常容易使用。如果不使用持久性存储(如数据库),如何通过管理员保存静态变量?另一方面,我认为你应该选择一个被接受的答案,因为它们都回答了你最初的问题。如果你想问另一个问题,请说得更具体一些。