zoukankan      html  css  js  c++  java
  • Title

    模板渲染JinJa2
    ​ 可以从数据库中查询数据,然后去替换我html中的对应内容(专业名词叫做模板渲染,你先渲染一下,再给浏览器进行渲染),然后再发送给浏览器完成渲染。 这个过程就相当于HTML模板渲染数据。 本质上就是HTML内容中利用一些特殊的符号来替换要展示的数据。 我这里用的特殊符号是我定义的,其实模板渲染有个现成的工具: jinja2  

    下载

    pip install jinja2
    做一个html文件

    Title

    姓名:{{name}}

    爱好:

      {% for hobby in hobby_list %}
    • {{hobby}}
    • {% endfor %}
    使用jinja2渲染index2.html文件,创建一个python文件,代码如下:

    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()
    创建一个测试的user表:

    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的语法规则写上,其内部就会按照指定的语法进行相应的替换,从而达到动态的返回内容。

  • 相关阅读:
    操作excel语法
    MySQL exists的用法介
    vim 快捷键
    mysql中datetime比较大小问题
    MySQL CAST与CONVERT 函数的用法
    tbxvUZIAJH
    springBoot相关
    springCloud
    Spring Boot使用JavaMailSender发送邮件
    RabbitMq 消息队列
  • 原文地址:https://www.cnblogs.com/saoqiang/p/12396469.html
Copyright © 2011-2022 走看看