Python学习:Flask框架和jinja2模板
来源:互联网 发布:软件开发自学 编辑:程序博客网 时间:2024/05/28 18:42
上一次使用了WSGI提供的接口构建了一个简单的web应用,但是WSGI提供的接口相对于web应用的逻辑来说还是太低级了,如果要处理不同的url那么wsgi里面的处理就会非常麻烦.所以python提供了很多的web框架,我们这需要用装饰器把自己的函数和不同的url关联起来就可以了.
from flask import Flaskfrom flask import requestapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home(): return '<h1>Home</h1>'@app.route('/signin', methods=['GET'])def signin_form(): return '''<form action="/signin" method="post"> <p><input name="username"></p> <p><input name="password" type="password"></p> <p><button type="submit">Sign In</button></p> </form>'''@app.route('/signin', methods=['POST'])def signin(): # 需要从request对象读取表单内容: if request.form['username']=='admin' and request.form['password']=='password': return '<h3>Hello, admin!</h3>' return '<h3>Bad username or password.</h3>'if __name__ == '__main__': app.run()
处理了登陆的url和登陆后处理以及进入主页的请求
在这个基础上我们还可以添加很多的内容,比如前面用来hashlib加密,我们就可以在这里添加register的内容进行注册,然后将注册成功的信息传送到后台,我们存储起来(可以加入sql的内容)
==========================================
当然我们不可能完全用字符串表示html,所以需要使用模板,python自带jinja2模板.注意使用模板要建立一个templates文件夹,然后在里面建立html文件,用{{var}}表示传入的变量,{%xxx%}表示命令
from flask import Flask,request,render_template#from jinja2 import Environment, PackageLoaderapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])def home(): return '<h1>hello</h1>'@app.route('/signin', methods=['GET'])def signin_form(): return render_template('form.html')@app.route('/signin', methods=['POST'])def signin(): # 需要从request对象读取表单内容: if request.form['username']=='admin' and request.form['password']=='password': print(render_template('home.html',username = request.form['username'])) return render_template('home.html',username = request.form['username']) return (render_template('form.html',message = 'Bad username or password'))if __name__ == '__main__': app.debug = True app.run()
form.html
<html><head> Please Sign in</head><body> {%if message %} <p style="color:red">{{ message }}</p> {%endif%} <form action="/signin" method="post"> <p><input name="username"></p> <p><input name="password" type="password"></p> <p><button type="submit">Sign In</button></p> </form></body></html>
home.html
<!DOCTYPE HTML><html><head> <title>Welcome, {{ username }}</title></head><body> <img src = ./static/test.PNG> <p>Welcome, {{ username }}!</p></body></html>
注意,图片等本地资源必须要使用相对路径,使用物理路径是不能被识别的!!!!!这个问题搞了我3个小时………
0 0
- Python学习:Flask框架和jinja2模板
- Flask-Jinja2模板学习总结
- Flask Jinja2模板
- Python Flask Web 第四课 —— 模板引擎Jinja2
- Flask学习总结笔记(3)-- Jinja2模板引擎之一
- Flask web 开发 Jinja2 模板
- Flask中的Jinja2模板使用
- python中模板引擎Jinja2学习
- python jinja2配置模板
- Python 之 jinja2模板
- Flask模板引擎——Jinja2
- Flask入门(二)Jinja2 模板
- Flask(Jinja2) 服务端模板注入漏洞
- Flask学习总结笔记(4)-- Jinja2模板引擎之二
- flask jinja2
- flask--jinja2
- Flask笔记(2)--flask的jinja2模板引擎
- flask.jinja2模板中自动转义和取消转义的分析
- android弹出软键盘,view整体上移问题
- java 的float型数据保存到数据库中变成了整数
- ACM第一次练习—1006G
- 精准剖析白帽SEO和黑帽SEO的区别
- Java异常处理实例分析--六种异常处理的陋习
- Python学习:Flask框架和jinja2模板
- Office Word页眉页脚设置、显示分节符、页眉“与上一节相同”的问题
- (总结)密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解(附:120G彩虹表下载)
- MFC-静态文本框用法
- 一种编码而已
- C#如何调用外部程序,及该托盘程序的恢复与隐藏
- Android开发之Intent.Action详解
- Git 时间,版本控制工具的高级用法
- java事务学习笔记(一)--概要