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 + ?属性名=属性值的格式
flask 微框架基础知识




@app.route('/query_url')
def query_url():
    return 'query_url' + url_for('query_user')




flask 微框架基础知识

二、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 ")




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)




显示结果


flask 微框架基础知识

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)




flask 微框架基础知识


flask 微框架基础知识

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)





flask 微框架基础知识

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 %}




运行结果
flask 微框架基础知识


三、消息提醒和异常处理


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 微框架基础知识的主要内容,如果未能解决你的问题,请参考以下文章

Flask框架基础功能

Flask基础简介

flask-- 基础篇

python的Flask 介绍

python的Flask 介绍

flask框架