1Up*_*1Up 4 python django django-templates django-settings
这很简单,但似乎没有提供。
基本上,如果我的网站是...
或非root用户安装
...我想django会知道这一点,并在模板中有一个常量。
我发现的解决方案涉及:
SITE_URL ={{ SITE_URL }}或其他方式在模板中访问它。不是很干
听起来不错,但是django不提供{{ GET_ME_THE_ROOT_URL }}参考吗?
抱歉,django已经训练我期待这样的好吃的东西。
只是说'如果我正在写一个框架,那是我要做的第一件事,除了在我的桌子旁边放一个小冰箱,里面装满了热钱包,还有一个微波炉,但距离很近但很安全。
哈!好问题。
让我们分解您的问题。您希望项目中所有可用模板中的某些数据都可用。而且,您只想提供一次值,而不要在视图之间重复。
模板上下文处理器是您要找的东西。在您的settings.py文件中,将新的context_processor添加到的列表中TEMPLATE_CONTEXT_PROCESSORS。
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.media",
"django.core.context_processors.request",
"django.contrib.messages.context_processors.messages",
"your_app.context_processors.root_url"
)
Run Code Online (Sandbox Code Playgroud)
然后,在内部your_app创建一个名为的文件context_processors.py。该文件将包含以下代码。
from django.conf import settings
def root_url(request):
"""
Pass your root_url from the settings.py
"""
return {'SITE_URL': settings.ROOT_URL_YOU_WANT_TO_MENTION}
Run Code Online (Sandbox Code Playgroud)
并且,在每个模板中,{{SITE_URL}}根据您ROOT_URL_YOU_WANT_TO_MENTION在settings.py文件中提供的值,您将在上下文中显示一个内容。
Django肯定会破坏所有人。但是提供了使您变宠的机制。
希望这能解决您的问题。
| 归档时间: |
|
| 查看次数: |
3625 次 |
| 最近记录: |