美文网首页
1.7 为你的视图添加 路由模式

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

作者: gznb | 来源:发表于2020-07-20 16:19 被阅读0次

为你的视图创建模板

你已经为你的 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 友好的链接。

相关文章

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

    为你的视图创建模板 你已经为你的 blog 应用程序创建了 视图 和 url 模式。 url 模式 把 url 映...

  • 11.Vue 路由多视图

    在Vue路由中可以使用多视图模式: 1.在 App.vue中添加多视图: 2.在router/index.js中配...

  • MVC 练气到华神 03

    视频:视频地址 课程中的内容: 添加控制器 添加视图 路由 匹配规则 Layout = null; Url htt...

  • 为视图添加丝滑的水波纹

    为视图添加丝滑的水波纹 为视图添加丝滑的水波纹

  • (6)添加删除历史记录功能,delete和destroy

    切换到新的分支进行开发 案例进行 添加路由image.png 添加删除动作image.png 在视图页面添加删除历...

  • Flask03.路由规则

    给视图函数指定多个路由 flask允许通过在视图函数上方罗列多个@app.route装饰器给某个视图函数添加多种路...

  • VUE第五天学习

    一、路由进阶 1.路由模式 默认的路由模式是hash,会在浏览器地址中添加一个#,#号后面的就会解析成路由规则 但...

  • 第83天 blender小技巧-02曲面刻字

    1、新建猴头,+细分,——应用网格 2、添加文字,调整为对齐视图 3、添加精简修改器,优化字体网格 4、面模式——...

  • 后台管理(3)--- 路由管理(vue)

    什么是路由呢?通过改变 URL,在不重新请求页面的情况下, 来更新视图,路由他分几种模式,常用的有hash模式和h...

  • vue-路由

    需要掌握: 路由map路由视图路由导航 路由参数的配置嵌套路由的使用 命名路由和命名视图重定向 router/in...

网友评论

      本文标题:1.7 为你的视图添加 路由模式

      本文链接:https://www.haomeiwen.com/subject/gudykktx.html