使用django进行前端模板渲染

再对前端模板渲染之前,我们要先掌握以下知识

一、
1、在django模板系统中,变量要和html尽量分开,HTML和Python是分开的。
2、确定表达的形式:
记住加载模板的方法 from django.template import Template
tem=Template(string)#字符串形式
3、确定表达的内容:
(1)使用django响应http方法
from django.http import HttpResponse
(2)表达内容需要时字典格式
(3)封装数据
采用 from django.template import Template.Context
data(变量)=Context(data)
(4)表达的形式加载表达的内容:
变量=Template.render(context(data))
return HttpResponse(变量)
4、变量
变量格式是两个大括号包裹着变量名 : {{ 变量 }}
(1)传入前端的变量最外层一定是一个字典
(2)具体的变量可以是 字符串、列表、字典等类型
(3)变量通过.(点)方法可以调用自己的无参数方法、索引、字符串方法例如(upper)
(4)如果变量是字典也可以通过.(点)键调用值

5、标签
标签的格式是1个大括号加两个%:{% %}
(1){% if %}标签
判断指定条件true或者false,通常判断一个变量是否存在或者为真
{% if %} 标签需要 {% endif %} 标签进行闭合
{% if %} 可以有 {% else %}
(2) {% ifequal %}标签
判断两个量是否相等,通常用于比较
{% ifequal %} 标签需要 {% endifequal %} 标签进行闭合
{% ifequal %} 可以有 {% else %}
(3) {% for %}标签
{% for %} 标签需要 {% endfor %} 标签进行闭合
{% for %} 标签采用了和python一样的for in结构。
{% for %} 循环出来的不是html对象只是数据
(4) {{ forloop }}标签
forloop是django模板语言定义好的一个变量,用来表示循环当中的每次循环
forloop为嵌套循环提供了parentloop参数来记录当前循环的上一层循环的情况
通常我们使用forloop标签进行循环的开头或者末尾判断
(5) 过滤器,对变量进行具体功能的处理 {{ | }}
Safe 去掉前端转义

二、创建django当中独立的HTML模板系统

1、在django项目目录下创建一个文件夹templates用来存放HTML文件
2、在settings文件内添加配置,寻找TEMPLATES,在’DIRS’中添加
os.path.join(BASE_DIR,“templates”)
在这里插入图片描述
4、在项目中创建views.py文件
3、创建列表页与详情页,简单实现点击列表能够跳转到详情页功能

代码参考如下:

在这里插入图片描述
(1)列表页
views

from django.shortcuts import render_to_response
from django.http import HttpResponse

def books(request):
    data=[
        {"id":1,"title":"近代史"},
        {"id":2,"title":"明清史"},
        {"id":3,"title":"宋元史"},
        {"id":4,"title":"五代史"},
        {"id":5,"title":"隋唐史"},
        {"id":6,"title":"秦汉史"},
        {"id":7,"title":"两周史"},
        {"id":8,"title":"夏商史"},
    ]

    return render_to_response('books.html',locals())

路由urls

from django.contrib import admin
from django.urls import path,re_path
from ourblog332.views import *
urlpatterns = [
    path('admin/', admin.site.urls),
    path('books/',books),
]

html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>史书</title>
</head>
<body>
    <ul>
        {% for book in data %}
            <li>
            <a href="/bookbook/{{ book.id }}">{{ book.title }}</a>
            </li>
        {% endfor %}
    </ul>
</body>
</html>

(2)详情页
views

def book_book(request,id):
    data={
        "1":{ "title": "近代史","img":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3893318486,4029287079&fm=200&gp=0.jpg"},
        "2":{ "title": "明清史","img":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3893318486,4029287079&fm=200&gp=0.jpg"},
        "3":{ "title": "宋元史","img":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3893318486,4029287079&fm=200&gp=0.jpg"},
        "4":{ "title": "五代史","img":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3893318486,4029287079&fm=200&gp=0.jpg"},
        "5":{ "title": "隋唐史","img":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3893318486,4029287079&fm=200&gp=0.jpg"},
        "6":{ "title": "秦汉史","img":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3893318486,4029287079&fm=200&gp=0.jpg"},
        "7":{ "title": "两周史","img":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3893318486,4029287079&fm=200&gp=0.jpg"},
        "8":{ "title": "夏商史","img":"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3893318486,4029287079&fm=200&gp=0.jpg"},
    }.get(id)
    return render_to_response('book_book.html',locals())

路由urls

from django.contrib import admin
from django.urls import path,re_path
from ourblog332.views import *
urlpatterns = [
    path('admin/', admin.site.urls),
    re_path('bookbook/(?P<id>\d{1,2})',book_book),
]

book_book.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>{{ data.title }}</h1>
    <img src="{{ data.img }}">
    <a href="/books/">返回列表页</a>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值