Python Django 编程 | 连载 04 - Django 模板
一、Django Template 模板
模板可以动态生成HTML网页,由HTML代码和特殊的模板语法组成。
Django 项目的模板文件是放置在 templates
目录下的,使用 PyCharm 创建的 Django 项目会在 settings 文件中的 TEMPLATES
中自动将模板位置配置好
在视图函数中使用 render() 函数可以渲染页面,需要请求、模板路径以及动态数据作为参数。
from django.shortcuts import render
def hallo(request):
# 业务代码
# 返回render函数渲染的页面
return render(request, template_path, context)
HTML模板中通过{{ 变量名 }}
来渲染从后端传来的动态数据
使用 Pycharm 创建项目django_templates
会自定配置好模板路径
通过命令行创建的 django 项目,则需要手动添加模板路径
通过命令行创建zulu应用
python3 manage.py startapp zulu
在 zulu app 内增加 urls.py,配置一个 tango/
路径
from django.urls import path
from .views import *
urlpatterns = [
path('tango/', Tango.as_view()),
]
在项目根路径的 urls.py 中配置 zulu app 的映射
from django.urls import path, include
from zulu import urls as zulu
urlpatterns = [
path('admin/', admin.site.urls),
path('zulu/', include(zulu))
]
在 zulu app 的 views.py 中书写视图类,并绑定模板
from django.shortcuts import render
from django.views.generic import View
# Create your views here.
class Tango(View):
def get(self, request):
context = {'info': 'This is Tango 5'}
return render(request, 'tango.html', context=context)
在项目根路径下的 templates 文件夹下增加模板 tango.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Zulu</title>
</head>
<body>
<h1>{{info}}</h1>
</body>
</html>
启动 Django 应用,在浏览器中输入 /zulu/tango/
页面中的动态数据被成功渲染出来。
二、Template 内置标签与静态文件配置
变量与标签
变量使用 {{ }}
双大括号来表示,如果从后端传递到前端的数据 {{ info }},内置的标签类型,使用 {% %}
大括号和百分号的形式来表示。常用的内置标签如下:
标签形式 | 标签说明 |
---|---|
{% for %} {% endfor %} | 遍历输出列表中的内容 |
{% if %} {% elif %} {% endif %} | 对表达式进行判断 |
{% url name args %} | 引用路由配置名 |
{% load %} {% load static %} | 遍历输出列表中的内容 |
{% static path %} | 读取静态资源 |
{% extends base_template %} | 模板继承 |
{% block data %} {% endblock %} | 重写继承的父模板的内容 |
{% csrf_token %} | 跨域秘钥 |
for 循环标签是模板中比较常用的标签,常常用来遍历输出列表中的数据,for 循环标签还有一些比较常用的变量,比如索引等
变量名 | 变量说明 |
---|---|
forloop.counter | 从 1 开始计算获取当前索引 |
forloop.counter0 | 从 0 开始计算获取当前索引 |
forloop.revcounter | 索引从最大数递减到 1 |
forloop.revcounter0 | 索引从最大数递减到 0 |
forloop.first | 当前元素是否是第一个 |
forloop.last | 当前元素是否是最后一个 |
empty | 是否为空 |
相关文章
- Python进阶28-Django 模板层(Jinja2)
- pycharm执行代码快捷键_python 函数调用
- python语言变量命名规则有什么_Python变量命名规则(超级详细)
- Python实现商场管理系统
- python整除和取余写法_Python的整除和取余[通俗易懂]
- python解析xml文件(解析、更新、写入)
- python语言一般用于什么_PYthon
- 【说站】Python Dijkstra算法是什么
- 【说站】python逻辑取反的实现
- h5 Python_python做h5网站
- Python 多进程处理数据
- Python+Django实现简单HelloWord网页
- python attrs_一直比较疑惑python中关于attrs的问题
- Python:利用python代码编程实现将视频的avi格式转换为MP4格式
- python django 数据库_Apache+Mysql+PHP/Python简单项目
- 关于python中lambda函数的描述_Python全局变量
- 【Python常用函数】一文让你彻底掌握Python中的filter函数
- 使用Python对Excel数据进行排序,更高效!
- Python Tkinter Gui 常用组件介绍 基本使用
- 如何学好Python
- 【2023新书】Python数据科学手册:使用数据的基本工具
- python-Django-基础概念(一)
- python-Django-Django 常用模板标签和过滤器(二)
- Python使用platform库获取系统信息:操作系统信息、硬件信息、python环境信息
- Python递归实现汉诺塔详解编程语言
- MySQL与Python搭配,实现数据库操作。(mysql-python)
- Python3:Django连接Mysql数据库时出错,’Did you install mysqlclient or MySQL-python’详解编程语言
- 将你的应用迁移到 Python 3 的三个步骤
- Python教程网络安全篇
- Python中的__new__与__init__魔术方法理解笔记
- python基于mysql实现的简单队列以及跨进程锁实例详解