템플릿 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>

다음과 같이 파이썬 파일을 생성, index2.html 파일을 렌더링 jinja2 사용

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;

원리는 우리가 jinja2에 HTML 페이지에 문법의 규칙을 따라야의 internal'll 동적 콘텐츠 수익을 달성하기 위해 지정된 구문에 따라 교환을 작성할 때, 템플릿 문자열 대신합니다.

추천

출처www.cnblogs.com/zdqc/p/11578997.html