请问个关于 django 动态设置 base 页面的问题

2015-05-20 11:01:32 +08:00
 Anybfans

现在有个django blog。我想用户可以设置meta的信息。
<title>{{detals.title}}</title>
<meta name="description" content="{{detals.description}}" />
<meta name="keywords" content="{{detals.keywords}}">
<link rel='next' href='{{detals.url}}/about/' />
<link rel="canonical" href="{{detals.url}}" />
<meta property="og:title" content="{{detals.name}} - {{detals.url}}" />
<meta property="og:type" content="blog" />
<meta property="og:url" content="{{detals.url}}" />

例如这样。请问要具体怎么做。。真心纠结这个问题。先谢谢!

2655 次点击
所在节点    问与答
12 条回复
Anybfans
2015-05-20 11:04:06 +08:00
这写信息写在base.html页面里面。可是怎么才能在后台渲染给base.html呢。
好像没有专门要去渲染base页面的
一般都是index.html什么的
zenxds
2015-05-20 11:06:51 +08:00
把用户设置的信息作为数据传入就行了,base里面一般用block包上,在子页面重写
Anybfans
2015-05-20 11:11:27 +08:00
@zenxds 那么每个页面都要重写了?
zenxds
2015-05-20 11:16:25 +08:00
@Anybfans 你可以单独写一个模板去extend base,然后跟用户相关的页面去extend这个模板,如果你所有页面都想这么设置那就直接写在base
Anybfans
2015-05-20 11:36:09 +08:00
@zenxds 对呀。可是怎么数据怎么渲染给base.html呢。。。还是不懂。。
例如我现在后台已经得到这个数据了。。怎么渲染给Base页面呢
Anybfans
2015-05-20 11:40:31 +08:00
@zenxds 我把那个后台获取数据,然后设置session 放在了中间件里面。。
glasslion
2015-05-20 13:39:23 +08:00
django template 是可以继承和覆盖的

base.html:
<head>
{% block hello %}
<title> xxx</title>
{% endblock %}
</body>
</head>

details.htm
{% extends "base.html" %}


{% block head %}
{{ block.super }}
<meta property="..." />
{% endblock %}
Anybfans
2015-05-20 14:01:33 +08:00
@glasslion 这个知道呀。可是怎么把数据渲染给base.html是个问题。。
zq9
2015-05-20 14:28:31 +08:00
@Anybfans templatetags 传request.user 进去查对应用户的数据返回。。。
zq9
2015-05-20 14:37:24 +08:00
Anybfans
2015-05-20 15:39:18 +08:00
@zq9 对呀。用tags 感觉要简单好多。。。。。。。懂。我试试。先谢谢!
Anybfans
2015-05-20 15:53:03 +08:00
@zq9 已经完美解决。谢谢!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/192400

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX