Шаблон рендеринга jinja2

Шаблон рендеринга jinja2

Вы можете запросить данные из базы данных, а затем я пошел, чтобы заменить соответствующее содержимое в HTML (профессиональный термин, называемый шаблон рендеринга, визуализации вам первый взгляд, дать визуализацию браузера), а затем отправляется в браузер закончил рендеринг. Этот процесс эквивалентен данные шаблона рендеринга HTML. Это, по существу, чтобы заменить данные, чтобы показать содержимое HTML использовать некоторые специальные символы. Я здесь с моим определением специальных символов, на самом деле, есть готовые инструменты шаблона рендеринга:jinja2  

скачать

pip install jinja2

Сделать 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">
  <title>Title</title>
</head>
<body>
    <h1>姓名:{{name}}</h1>
    <h1>爱好:</h1>
    <ul>
        {% for hobby in hobby_list %}
        <li>{{hobby}}</li>
        {% endfor %}
    </ul>
</body>
</html>

Используйте jinja2 рендеринга index2.html файл, создать файл питона, следующим образом:

from wsgiref.simple_server import make_server
from jinja2 import Template


def index():
    with open("index2.html", "r",encoding='utf-8') as f:
        data = f.read()
    template = Template(data)  # 生成模板文件
    ret = template.render({"name": "于谦", "hobby_list": ["烫头", "泡吧"]})  # 把数据填充到模板里面
    return [bytes(ret, encoding="utf8"), ]


# 定义一个url和函数的对应关系
URL_LIST = [
    ("/index/", index),
]

def run_server(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html;charset=utf8'), ])  # 设置HTTP响应的状态码和头信息
    url = environ['PATH_INFO']  # 取到用户输入的url
    func = None  # 将要执行的函数
    for i in URL_LIST:
        if i[0] == url:
            func = i[1]  # 去之前定义好的url列表里找url应该执行的函数
            break
    if func:  # 如果能找到要执行的函数
        return func()  # 返回函数的执行结果
    else:
        return [bytes("404没有该页面", encoding="utf8"), ]


if __name__ == '__main__':
    httpd = make_server('', 8000, run_server)
    print("Serving HTTP on port 8000...")
    httpd.serve_forever()

Данные теперь наш собственный почерк, вы можете запросить данные из базы данных для заполнения страницы

Используйте pymysql подключения к базе данных:

conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="xxx", db="xxx", charset="utf8")
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute("select name, age, department_id from userinfo")
user_list = cursor.fetchall()
cursor.close()
conn.close()

Создание теста таблицы пользователей:

CREATE TABLE user(
  id int auto_increment PRIMARY KEY,
  name CHAR(10) NOT NULL,
  hobby CHAR(20) NOT NULL
)engine=innodb DEFAULT charset=UTF8;

Принцип заключается шаблон замена строки, до тех пор, пока мы следуем правилам грамматики в HTML-странице на Jinja2 написать его internal'll сделать замену в соответствии с указанным синтаксисом для достижения динамического возврата содержимого.

рекомендация

отwww.cnblogs.com/zdqc/p/11578997.html
рекомендация