动态网页:jinja2的template 和render方法 3

前面我们已经学习到了,前端页面可以将一些请求,数据,通过post 或者get请求,发送给后端,后端通过wsgiref模块获取到一个env的大字典获取到所有的这些数据,现在,我们将学习一种jinja2模块,可以通过templata实例化一个类,给这个类传一个html文件内容,文件内容也就是前端页面可以通过一些模板语法获取到这些后端产生的数据,这就实现了前后端数据的交互

具体做法的代码看下面的例子:

主程序:

from wsgiref.simple_server import make_server# from urls import url# from views import *from jinja2 import Template## jinja2是一个模板语法,专用模块import pymysqlimport time

##这里的env就是一个大字典,里面的信息是HTTP协议之前传过来的,# 经过wsgiref处理之后将所有的信息转化成一个大字典def error(env):    return ‘404‘

def get_time(env):    with open(r‘E:\周末四期\day19\代码\day19\第二部分动态网页\get_time.html‘,‘r‘,encoding=‘utf-8‘) as f:        data = f.read()    current_time = time.strftime(‘%Y-%m-%d %X‘)    res = data.replace(‘@@[email protected]@‘,current_time)    return res

def get_user(env):    user_dict = {‘username‘:‘jason‘,‘password‘:‘123‘,‘hobby‘:[‘read‘,‘work‘]}    # user_dict = {‘hahhha‘}    with open(‘E:\周末四期\day19\代码\day19\第二部分动态网页\get_user.html‘,‘r‘,encoding=‘utf-8‘) as f:        data = f.read()    from jinja2 import Template    tmp = Template(data)  # 这个Templata是jinja2中的一个类,传一个data实例化一个对象    res = tmp.render(data1=user_dict)    # 将user_dict传递给前端页面   前端页面用过变量名data1就能够拿到user_dict字典    ##这里将data1通过这个rendder 方法传过去,前端页面就可以通过{{data1}}的方法获取了    return res

def get_data(env):    conn = pymysql.connect(        host = ‘127.0.0.1‘,        port = 3306,        user = ‘root‘,        password = ‘654321‘,        database = ‘db666‘,        charset = ‘utf8‘,        autocommit = True        ###自动提交    )    cursor = conn.cursor(pymysql.cursors.DictCursor)    cursor.execute(‘select * from user‘)    res = cursor.fetchall()    # print("获取到的数据是:")    # print(res)

    with open(r‘E:\周末四期\day19\代码\day19\第二部分动态网页\get_date_from_databases.html‘,‘r‘,encoding=‘utf8‘) as f:        data = f.read()    tmp = Template(data)    res1 = tmp.render(user_list = res)  # [{},{},{}]    return res1

url = [    (‘/get_time‘,get_time),    (‘/get_user‘,get_user),    (‘/get_data‘,get_data),]##这个称作路由与视图函数的对应关系

def run(env,response):    response(‘200 OK‘, [])  # 固定格式   不需掌握    print(env)  # 将http格式的数据处理完毕 形成一个字典给你调用

    current_path = env.get(‘PATH_INFO‘)    func = None    for url_tuple in url:        if current_path == url_tuple[0]:            func = url_tuple[1]  # 如果路由匹配上了 就回去对应的函数            break    if func:        res = func(env)    else:        res = error(env)    return [res.encode(‘utf-8‘)]

if __name__ == ‘__main__‘:    server = make_server(‘127.0.0.1‘,8080,run)    server.serve_forever()

"""动静态网页:    静态网页:数据是写死的,万年不变    动态页面:数据是实时获取的,一直在改变,比如数据库的数据,以及当前时间

模板渲染(雏形)    后端产生数据直接传递给前端页面,前端页面获取数据通过模板语法展示

模板语法:    {{ 变量名 }} 获取后端传递的数据,通过变量名

    jinja2 模板语法  极为接近python语法    {{ data}}    {{{ data1.username  }}    {{ data1.password  }}    {{ data1.hobby }}    {{ data1.hobby.0 }}    {{ data1.hobby.1 }}"""

"""附带的html文件:E:\周末四期\day19\代码\day19\第二部分动态网页\get_date_from_databases.html<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><user_list>{{ user_list }}{#{{ user_list }}#}{#</user_list>#}</html>

E:\周末四期\day19\代码\day19\第二部分动态网页\get_time.html<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>get_time</title></head><body>

<h1>@@[email protected]@</h1><!--先写一个时间,固定写死,之后再读取这个替代掉这个时间 --></body></html>

E:\周末四期\day19\代码\day19\第二部分动态网页\get_user.html<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>{{ data1  }}{{ data1.username  }}{{ data1.password  }}{{ data1.hobby }}{{ data1.hobby.0 }}{{ data1.hobby.1 }}

</body></html>

"""

原文地址:https://www.cnblogs.com/1832921tongjieducn/p/11391976.html

时间: 2024-10-15 17:56:47

动态网页:jinja2的template 和render方法 3的相关文章

动态网页脚本语言

在ASP .PHP.JSP环境下,HTML代码主要负责描述信息的显示样式,而程序代码则用来描述处理逻辑.普通的 HTML页面只依赖于Web服务器,而ASP .PHP.JSP页面需要附加的语言引擎分析和执行程序代码.程序代码的执行结果被重新嵌入到HTML代码中,然后一起发送给浏览器.ASP .PHP.JSP三者都是面向Web服务器的技术,客户端浏览器不需要任何附加的软件支持. 二.技术特点: (一)ASP的技术特点: 1. 使用VBScript .JScript等简单易懂的脚本语言,结合HTML代

动态网页和静态网页的特点

静态网页的基本概述静态网页的网址形式通常是以.htm..html..shtml..xml等为后后缀的.静态网页,一般来说是最简单的HTML网页,服务器端和客户端是一样的,而且没有脚本和小程序,所以它不能动.在HTML格式的网页上,也可以出现各种动态的效果,如.GIF格式的动画.FLASH.滚动字母等,这些"动态效果"只是视觉上的,与下面将要介绍的动态网页是不同的概念. 静态网页的特点(1)静态网页每个网页都有一个固定的URL,且网页URL以.htm..html..shtml等常见形式为

使用JSP/Server技术开发新闻发布系统第一章动态网页开发基础

      一:为什么需要动态网页    由于静态网页的内容是固定的,不能提供个性化和定制化得服务,使用动态网页可真正地与用户实现互动. 二:什么是动态网页  ①:动态网页是指在服务器端运行的,使用程序语言设计的交互网页,她们会根据某种条件的变化返回不同的网页内容.  ②动态网页需要使用服务器脚本语言. 三:动态网页的优势: ①        交互性:即网页会根据用户的要求和选择而动态改变和显示内容. ②        自动更新:即无時须改变页面代码,便会自动生成新的页面内容,可以大大节省工作量

使用爬虫登录动态网页(一基础)

1.之前在网页中URl链接采用Urllib/Urllib2,但是现在加强版requests模块进行网页URl提取,requests库模拟登录或者登录动态网页 URL理解:网页抓取过程浏览器向服务器请求的过程:1.访问资源命名机制2.存放资源主机3.资源自身的路径 对requests模块的入门:http://blog.csdn.net/iloveyin/article/details/21444613 对于get参数request.get(url,data=XXX,**.kwargs) impor

动态网页开发基础

什么是动态网页? 误区: 初学者一般认为动态网页,就是会动的网页,实际上不是这样的. 动态网页: 是指在服务器端进行的,使用程序语言设计的交互式网页,它们会 根据某种条件的变化,返回不同的网页内容. 动态网页的优势: 1.交互性:即网页会根据用户的要求和选择而动态改变和显示内容 2.自动更新:即无须改变页面代码,便会自动生成新的页面内容,可以节省工作量 3.随机性:即当不同的时间,不同的人访问同一网址时会产生不同的页面效果 为什么学习B/S架构技术? 在学习B/S架构前,先了解C/S(Clien

动态网页和静态网页的区别

一.从功能方面来说动态网站与静态网站的区别 1. 动态网站可以实现静态网站所实现不了的功能,比方说:聊天室.论坛.音乐播放.浏览器.搜索等:而静态的网站则实现不了.2. 静态网站,如用Frontpage或Dreamweaver开发出来的网站,其源代码是完全公开的,任何浏览者都可以非常轻松地得到其源代码,也就是说,自己设计出来的东西很容易被别人盗用.动态网站,如:ASP开发出来的网站,虽然浏览者也可以看到其源代码,但是那已经是转换过以后的代码,想盗用源代码那是不可能的,因为它的源代码已经放在服务器

用JSP写动态网页

JSP作为动态网页开发技术,有一套自己的元素,它除了HTML静态内容之外,还包括指令.表达式.JSP小脚本.声明.标准动作.注释等元素. JSP页面由静态内容.指令.表达式.小脚本.声明.标准动作.注释等元素构成. JSP中包括基本动态元素有 : 1.注释    2.指令   3.Java代码段   4.表达式   5.声明 JSP文件中有:1.HTML静态部分   2.<%Java代码段%>执行的动态部分 JSP中的注释: 1.HTML注释: <! -- 要注释的内容-- > J

用C#从数据库动态生成AdminLTE菜单的一种方法

用C#从数据库动态生成AdminLTE菜单的一种方法 当前的应用设计风格趋于Flat扁平化,很多基于BootStrap实现了很多UI非常漂亮的管理界面(Bootstrap admin template). 此核心文件开源在Github:https://github.com/JackWangCUMT/AdminLTE-Menu-Generate.首先看一下主界面: 查看左边导航的菜单html结构(下面代码有错误,HTML自定义属性直接用空格进行分割,而不是,号进行分割,不然jquery获取定义属性

静态/动态网页-动静之间

经过新闻系统的实践之后还不太了解什么是静态网页,什么是动态网页,在学习了Asp.net之后对静态网页和动态网页做一个新的认识.在网页制作中,静态网页是动态网页制作的基础,我们要想学习好动态网页设计,首先必须对静态网页有一个全面的认识. 静态网页 静态网页使用超文本标记语言,是标准的HTML文件,无法与用户产生互动的网页.静态网页只能够单纯地显示网页的内容,相当于是展览中画纸上的一幅画,只是展示出来,而无法像现在使用的浏览器那样,对我们的操作做出响应. 优点: a.一经发布到服务器,静态网页保存在