템플릿 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 동적 콘텐츠 수익을 달성하기 위해 지정된 구문에 따라 교환을 작성할 때, 템플릿 문자열 대신합니다.