1.7 为你的视图添加 路由模式

为你的视图创建模板

你已经为你的 blog 应用程序创建了 视图 和 url 模式。 url 模式 把 url 映射到视图,视图决定向用户返回哪些数据。模板定义了如何去展示这些数据,他们通常是结合Django 的模板语言写在 HTML 中。你可以在这个链接中得到更多有关Django 模板语言的知识。

让我们为你的 应用程序去添加一个模板,以便使用友好的方式去展示 文章。

在你的 blog 应用程序内部目录中创建下面的目录及文件:

Snipaste_2020-07-17_22-14-48.jpg

前面的结构将是你模板 file 的结构,这个 base.html 文件将包括网站的 主要 HTML 结构,分为 主要内容区域和侧边栏。list.htmldetail.html 文件将从 base.html 文件中继承,分别去渲染 博客文章列表和详情视图。

Django 有一个强大的模板语言,它允许你展示指定的数据,它是基于 template tages , template variables, template filters:

  • template tages 模板标签控制模板的渲染。看起来像 {% tag %}
  • template variables 模板变量当模板被渲染时通过值来进行替换,看起来像 {{ variable }}
  • template filters 模板过滤器允许你修改 变量的显示,看起来像 {{ variable | filter }}

你可以在这个链接看到所有的 内置 模板标签和模板过滤器。

编辑 base.html 文件并且添加下面的代码:

{% load static %}
<!DOCTYPE html>
<html>
    <head>
        <title>{% block title %}{% endblock %}</title>
        <link href="{% static "css/blog.css" %}" rel="stylesheet">
    </head>
    <body>
        <div id="content">
        {% block content %}
        {% endblock %}
        </div>
        <div id="sidebar">
            <h2>My blog</h2>
            <p>This is my blog. </p>
        </div>
    </body>
</html>

{% load static %} 告诉 Django 去加载包含在INSTALLED_APPS 配置 中的django.contrib.staticfiles 应用程序所提供的 静态 模板标签。加载完毕之后,你就可以在模板中使用 {% static %} 模板标签了。在这些模板标签中,你能包括静态文件,例如 blog.css 文件,你可以在 blog 应用程序下的static/ 目录里得示例代码中找到。将本章的代码中的static/目录复制到与您的项目相同的位置,以便将CSS样式应用到模板中。你可以在这个链接中发现这些目录。

你可以看到这儿有两个 {% block %} 标签,这就是告诉 Django 你想要在 这个区域定义一个快(block)。 继承自这个模板的模板将使用内容填充满这个快。你定义了一个 名为 title 的快 和 一个名为 content 的快。

让我们来编辑 post/list.html 文件,是他看起来像下面一样:

{% extends "blog/base.html" %}
{% block title %}My Blog{% endblock %}
{% block content %}
    <h1>My Blog</h1>
    {% for post in posts %}
        <h2>
            <a href="{{ post.get_absolute_url }}">
            {{ post.title }}
        </a>
        </h2>
        <p class="date">
            Published {{ post.publish }} by {{ post.author }}
        </p>
        {{ post.body | truncatewords:30 | linebreaks }}
    {% endfor %}
{% endblock %}

使用 {% extends %} 模板标签,你告诉 Django 是从 blog/base.html 模板中所继承的。然后,使用内容填充基本模板的titlecontent块。你可以通过遍历文章,并且显示他们的 标签,日期,作者,和正文,包括标题中指向 该文章的规范URL 的链接。

在文章的正文中,你使用了两个模板过滤器: truncatewords 将值截断为指定的单词数,linebreaks 将输出转换为 HTML 的换行符。你可以根据需要连接多个模板过滤器,每一个都应用于前面的一个输出。

打开 shell 并且允许 python manage.py runserver 命令去启动开发者服务器。在你的浏览器中打开 http://127.0.0.1:8000/blog,你会看到一些输出。请注意,你需要在这里显示一些已发布状态的文章。看起来应该像下面一样:

Snipaste_2020-07-17_23-05-06.jpg

接下来编辑 post/detail.html 文件:

{% extends "blog/base.html" %}
{% block title %}{{ post.title }}{% endblock %}
{% block content %}
    <h1>{{ post.title }}</h1>
    <p class="date">
        Published {{ post.publish }} by {{ post.author }}
    </p>
    {{ post.body | linebreaks }}
{% endblock %}

下一步,你可以返回到你的浏览器,点击一个文章的标题,你可以看到文章的详细内容。你应该看到类似下面的东西:


Snipaste_2020-07-17_23-09-37.jpg

看看这个网址,它应该是 /blog/2020/7/17/nice-meet-you/, 你应该为你的博客文章设计一个 SEO 友好的链接。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355