当前网站是否可以从模板访问?

发布于 2024-12-05 06:34:42 字数 162 浏览 3 评论 0原文

我试图简单地从模板中获取当前的 Site 进行解析,如下所示:

<h3>{{ site.name }}</h3>

不幸的是,这不会带来任何结果。

有没有办法从模板访问当前站点?

I'm trying to simply get the current Site from within a template for parsing like so:

<h3>{{ site.name }}</h3>

Unfortunately, this isn't bringing anything up.

Is there a way to get access to the current site from a template?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只等公子 2024-12-12 06:34:43

您的问题的标题假设“视图”和“模板”是可以互换的 - 它们不是。为了将当前站点放在模板中,需要将其添加到用于渲染模板的上下文中。如果您使用的是 ,您可以编写上下文处理器自动执行此操作。

您可以编写上下文处理器这样做:

from django.contrib.sites.models import Site

def site_processor(request):
    return { 'site': Site.objects.get_current() }

然后,将其添加到您的 template_context_processors ,然后像这样使用:

<h3>{{ site.name }}</h3>

The title of your question presumes that "view" and "template" are interchangeable -- they're not. In order to get the current site in a template, it needs to be added to the context that is used to render the template. If you're using a RequestContext, you can write a context processor to do this automatically.

You can write a context processor to do this like so:

from django.contrib.sites.models import Site

def site_processor(request):
    return { 'site': Site.objects.get_current() }

Then, add it to your TEMPLATE_CONTEXT_PROCESSORS, and use it like so:

<h3>{{ site.name }}</h3>
雨后彩虹 2024-12-12 06:34:43

奇怪的是,使用Bradleyayers处理器给出了无效的结果,因此我不使用站点框架,而是在请求中使用了参数。

因此,处理器看起来就是这样:

def host_processor(request):
    return { 'host': request.get_host() }

希望它有所帮助

Weirdly, using the bradleyayers processor gave Null results, so instead of using the Site framework, I used the parameter inside the request.

So the processor will look like that :

def host_processor(request):
    return { 'host': request.get_host() }

Hope it helped

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文