02--Django笔记--模板标签和过滤器

02–Django笔记–模板标签和过滤器

一、搭建渲染模板

渲染模板的文件位于应用文件夹中的 views.py 文件中

02-01

渲染模板即为请求后返回的html文件的渲染

之后修改 views.py 创建渲染函数

# from mysite.blog.models import Blog
from django.shortcuts import render, get_object_or_404
from .models import Blog, BlogType
# 渲染模板文件
# Create your views here.

def blog_list(request): # 博客列表html界面的渲染
    context = {} # context字典为传入html渲染的内容
    context['blogs'] = Blog.objects.all() # Blog.objects.all()为选择数据库中所有博客
    return render(request, 'blog_list.html', context)

def blog_detail(request, blog_pk): # 博客细节html界面的渲染;其中blog_pk参数为博客编号(pk意思为外键)
    context = {} # context字典为传入html渲染的内容
    context['blog'] = get_object_or_404(Blog, id = blog_pk) # get_object_or_404()在无法取到object的时候返回404界面
    return render(request, 'blog_detail.html', context)

但是此时并没有用于渲染的 blog_list.htmlblog_detail.html 文件

需要在应用内创建 templates 文件夹后,在文件夹下加入这两个文件

<!-- blog_list.html --> 
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的网站</title>
</head>
<body>
    {% for blog in blogs %} <!-- 这里的blog是从views.py中传入的内容 -->
        <h3>{{ blog.title }}</h3>
        <p>{{ blog.content }}</p>
    {% endfor %}
</body>
</html>
<!-- blog_detail.html -->
<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ blog.title }}</title><!-- 这里的blog是从views.py中传入的内容 -->
</head>
<body>
    <h3>{{ blog.title }}</h3>
    <p>{{ blog.content }}</p>
</body>
</html>

二、路由搭建

创建完模板渲染之后,还不能立刻访问,必须要先设置路由

需要在应用文件夹下创建 urls.py 加入路由

# urls.py
from django.urls import path
from django.urls import path
from . import views # 引入模板渲染的函数

urlpatterns = [
    # http://localhost:8000/blog/1
    path('<int:blog_pk>', views.blog_detail, name = 'blog_detail'),
]

然后再在项目文件夹 urls.py 中加入路由

02-02

当路由全部设置完毕后,即可运行代码

效果如下:

02-03

02-04

三、html优化

1. 链接设置

在html中设置可以跳转的链接可以使用如下方式:

02-05

其中在 urls.py 中设置的url的名称可以直接使用。

2. 过滤器

博客长度问题

{{ blogs|length }} 可以获取博客长度

<p>共有{{ blogs|length }}篇博客</p> <!-- 过滤器 -->

效果如下:

02-06

解决长博客显示问题

如果博客是长博客,也会将所有内容显示到博客列表:

02-07

可以使用过滤器修改博客显示长度:

<p>{{ blog.content|truncatechars:30 }}</p> <!-- 其中冒号后面的内容表示显示字符长度 -->
<!-- 或者使用truncatewords:30,表示显示前30个单词 -->

效果如下:

02-08

时间显示问题

可以使用过滤器对时间进行格式化:

<p>修改时间:{{ blog.last_updated_time|date:"Y-m-d G:i:s" }}</p>
<!-- 修改时间:2021-06-09 22:34:00 -->
时间显示问题

可以使用过滤器对时间进行格式化:

<p>修改时间:{{ blog.last_updated_time|date:"Y-m-d G:i:s" }}</p>
<!-- 修改时间:2021-06-09 22:34:00 -->
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值