gpt4 book ai didi

python - 一种在 settings.py 中设置 Django SITEURL 常量的方法

转载 作者:行者123 更新时间:2023-11-28 20:26:14 25 4
gpt4 key购买 nike

我有 PHP 背景,我知道在框架中的大多数地方都可以访问常量,我认为在 django 中也是如此。我也试图在 django 中获得该 URL,但我试图从 django.contrib 中获得它。我试图利用 django 的 Site 类并导入它。但问题是在加载 settings.py 时我无法导入任何 django contrib。文件。

那么我怎样才能自动拥有 SITE URL 以便我可以在任何地方使用,无论是在模板中还是在其他地方。这样做的最佳方法是什么?任何 python 实用程序都可以这样做吗?

最佳答案

例如,无论您在 settings.py 中定义什么

SITE_URL = 'http://www.mydomain.com'

可以在所有与 Django 相关的代码中访问:

from django.conf import settings #this imports also your specific settings.py

print settings.SITE_URL

或者只是Site.objects.get_current().domain

如果您希望能够在模板中访问它,您可以自己制作 template context processor .将其放入 my_project/content_processor.py

from django.conf import settings
def my_site_url(request):
return {
'SITE_URL': settings.SITE_URL,
}

或者如果你想要它是动态的:

from django.conf import settings
def my_site_url(request):
return {
'SITE_URL': Site.objects.get_current().domain,
}

并将其添加到 settings.py 中的 TEMPLATE_CONTEXT_PROCESSORS 变量。它看起来应该与之后的相似:

TEMPLATE_CONTEXT_PROCESSORS =("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages",
"my_project.context_processors.my_site_url",
)

完成了。

关于python - 一种在 settings.py 中设置 Django SITEURL 常量的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12333548/

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