flask 微框架基础知识
Posted python黑科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask 微框架基础知识相关的知识,希望对你有一定的参考价值。
O、前景介绍
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
Web应用采用访问和响应的方式和用户进行交互。
主要由用户发起一个Web requetst 请求,对网页进行请求。
请求成功后由Web 服务器返回一个 response 对象对浏览器进行渲染,显示出返回的网页。
浏览器访问网页的默认是get方法 。
flask应用的默认Ip是本地IP 127.0.0.1,默认端口是5000。
一、flask应用的基本构成
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return "hello world"
if __name__ == '__main__':
app.run()
1.
app = Flask(name)
建立一个flask应用,并且设置flask应用的目录为该模块的目录。
2.
@app.route(‘/’)
设置应用的路由,既访问的Web服务器的目录。
3.
@app.route(‘/’)
def hello_world():
return “hello world”
设置路由函数,访问该路由时执行该函数。
4.
app.run()
启动flask应用
二、flask路由和反向路由
1.参数的传递
在应用中添加一下代码,在访问WebUrl中添加参数可以把参数传递给Web后台程序。
注意:传进去的值是以字符串形式存在。
@app.route('/users/<id>')
def hello_users(id):
return "users: " + id
2.@route路由的访问方法
路由默认的是get方法,也可以更改路由方法,例如
@app.route('/user', methods=['POST'])
def hello_user():
return "hello user"
3.通过request 库来传递id
得添加request库的导入
from flask import Flask,request
@app.route('/query_user')
def query_user():
id = request.args.get('id')
return "query_user: id " + id
属性输入采用 url + ?属性名=属性值的格式
@app.route('/query_url')
def query_url():
return 'query_url' + url_for('query_user')
二、flask模板
模板是为了使后台逻辑代码与网页前端代码分离的语法。
先引入render_template模块
from flask import render_template
新建一个template文件夹,存放html文件。
(为节约空间,以下的html文件省略主体结构,只写body中的内容)
1.模板的基本使用
例如demo.html文件
<h1>{{ content }}hello world this is first web</h1>
路由代码:传入content
@app.route('/')
def hello_world():
return render_template("demo.html", content="hello flask ")
2.传入类
#数据类
class User:
def __init__(self, user_id, user_name):
self.user_id = user_id
self.user_name = user_name
<p>User id is {{ user.user_id }}</p>
<p>User name is {{ user.user_name }}</p>
@app.route('/user')
def hello_user():
user = User(1, "hello user")
return render_template("demo.html", user=user)
显示结果
1.模板的 if 语法
query_user.html
{% if user %}
{{ user.user_name }}
{% else %}
<p> hello world</p>
{% endif %}
如果user不为空则输出 user.name 否则 输出hello world
@app.route('/query_user/<id>')
def query_user(id):
user = None
if id == '1':
user = User(2, "zzm")
return render_template("query_user.html", user = user)
4.模板循环
{% for user in users %}
{{ user.user_id }}----{{ user.user_name }}<br/>
{% endfor %}
@app.route('/list')
def user_list():
users = []
for i in range(1, 11):
user = User(1, "zzm" + str(i))
users.append(user)
return render_template("user_list.html", users=users)
5.模板继承
以下代码省略HTML主体结构,只下body中的部分
先写一个base.html
<div>
这是头部
</div>
{% block content %}
{% endblock %}
<div>
这是尾部
</div>
然后在one_base.html中用extends 语法继承base.html页面,
然后再重写content中的内容
{% extends "base.html"%}
{% block content %}
<h2>这是第一页</h2>
{% endblock %}
运行结果
三、消息提醒和异常处理
1.消息提醒
在网页中设置提醒的消息需要引入flash模块
from flask import flash
flash.html
<form action="/login" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="提交">
</form>
<h2>{{ get_flashed_messages()[0] }}</h2>
@app.route('/flashDemo')
def flash_demo():
flash("hello world flash")
return render_template("flash.html")
2.异常处理
在别人输错网址的时候,服务器会返回一个404异常,将会返回一个浏览器的404网页。
我们可以进行异常处理,抛出自己写的404网页,这样用户体验比较好。
写个404.html
<h1>this is error</h1>
异常处理语法:
errorhandler() 括号里面填写错误代码
@app.errorhandler(404)
def not_fond(e):
return render_template("404.html")
这里随便输错一个网页,就弹出来了我们自己编写的404异常网页
以上是关于flask 微框架基础知识的主要内容,如果未能解决你的问题,请参考以下文章