Python Web编程,Django框架 -- (5) Django模板开发

  1. 模板:

模板是Django用于动态生成HTML的便捷方法。模板包含所需HTML输出的静态部分以及通过一些语法描述的动态内容。一个Django项目可以配置一个或多个模板引擎(如果不适用模板,可以不配置模板)。Django内置了自己的模板系统后端,以及Jinjia2,还可以获取其他的模板语言后端,甚至自定义模板后端。

  1. 模板语言:

Django模板使用Django模板语言标记一个文本文档或者字符串,通过一些变量及标签的语法,可以动态的获得数据(其他的原样输出),从而形成新的HTML文档。

  • 模板变量 {{ variables }}

  • 从URL获取模板变量 {% url 'urlyear' 2020 %}

  • 静态读取资源内容 {% static 'css/header.css' %}

  • for 遍历标签 {% for type in type_list %} {% endfor %}

  • if 判断标签 {% if name.type == type.type %} {% endif %}

  • 标签 Tags {% csrf_token %}

  • 过滤器 {{ django|title }}

  1. 自定义模板:

一个模板后端是继承自后端基本类 django.template.backends.base.BaseEngine。它必须实现 get_template() 和 可选实现 from_string()。

  1. 数据库展示:
  • 创建 Django 项目,创建一个App,settings中配置好数据库的配置。参见:https://www.jianshu.com/p/9a15851b4d69,
    https://www.jianshu.com/p/e8efc6ee6fd7

  • 配置URL

在项目的url.py中:

from django.contrib import admin

from django.urls import path, include

urlpatterns = [

path('admin/', admin.site.urls),  # 默认配置,后台管理页面

path('', include('myapp.urls')),  # 跳转到 myapp 文件夹下的urls.py 文件中。

]

在App的 urls.py 中添加如下代码:

from django.urls import path

from . import views

urlpatterns = [

path('query/', views.show),

]

  • 在app的models.py中添加如下:

from django.db import models

Create your models here.

class Name(models.Model):

# id 自动创建

name = models.CharField(max_length=50)

author = models.CharField(max_length=50)

stars = models.CharField(max_length=5)
  • 在数据库中添加数据:
    参见:https://www.jianshu.com/p/fb3444a3a0dc

  • views.py中添加如下代码:

from django.shortcuts import render
from .models import Name

# Create your views here.
def show(request):
    title = '展示数据库内容'
    book_list = Name.objects.all()
    return render(request, 'index.html', locals())
  • 在myapp文件夹下,新建文件夹 templates,然后在这个文件夹下新建文件 index.html
image.png

index.html中添加如下代码:




    
    Title


{{ title }}

{% for book in book_list %}
{{ book.name }} {{ book.author }} {{ book.stars }}
{% endfor %}
  • 执行Django项目:

python manage.py runserver

  • 打开网页,可以看到数据库内容:
image.png

参考资料:

  1. django 文档 模板:https://docs.djangoproject.com/zh-hans/3.1/topics/templates/

你可能感兴趣的:(Python Web编程,Django框架 -- (5) Django模板开发)