python web开发框架flask,python Web开发 flask轻量级Web框架-Go语言中文社区

O、flask介绍

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应用的基本构成

#coding=utf-8

from flask import Flask

app = Flask(__name__)

@app.route('/')

def hello_world():

return "hello world"

if __name__ == '__main__':

app.run()

app = Flask(name)

这是建立一个flask应用,并且设置flask应用的目录为该模块的目录。

@app.route(’/’)

设置应用的路由,既访问的Web服务器的目录。

@app.route(’/’)

def hello_world():

return “hello world”

设置路由函数,访问该路由时执行该函数。

app.run()

启动flask应用

运行程序,在浏览器中访问服务器地址即可得到返回的网页

二、flask路由和反向路由

1.参数的传递

在应用中添加一下代码,在访问WebUrl中添加参数可以把参数传递给Web后台程序。

注意:传进去的值是以字符串形式存在。

@app.route('/users/')

def hello_users(id):

return "users: " + id

dbfa64d17daf68544618f7379b5a6e9f.png

2.@route路由的访问方法

路由默认的是get方法,也可以更改路由方法,例如

@app.route('/user', methods=['POST'])

def hello_user():

return "hello user"

3.通过request 库来传递id

得添加requests库的导入

from flask import Flask,request

@app.route('/query_user')

def query_user():

id = request.args.get('id')

return "query_user: id " + id

属性输入采用 url + ?属性名=属性值的格式

709d54583df2e6bf53935359d06a683d.png

4.反向路由

通过视图函数反导出url地址

@app.route('/query_url')

def query_url():

return 'query_url' + url_for('query_user')

这样就在query_url函数中访问到了 query_user的路由地址

657b74afb685e7b6313a582156a7dcf0.png

二、flask模板

模板是为了使后台逻辑代码与网页前端代码分离。

先引入render_template模块

from flask import render_template

新建一个template文件夹,存放html文件。

1.模板的基本使用

例如demo.html文件

Title

{{ content }}hello world this is first web

@app.route('/')

def hello_world():

return render_template("demo.html", content="hello flask ")

2c0e7b375301703251bb46b29b6ce006.png

2.传入类

class User:

def __init__(self, user_id, user_name):

self.user_id = user_id

self.user_name = user_name

Title

User id is {{ user.user_id }}

User name is {{ user.user_name }}

@app.route('/user')

def hello_user():

user = User(1, "hello user")

return render_template("demo.html", user=user)

299a2f9d785ae98ee6a01a3d6eae1d2e.png

模板的 if 语法

query_user.html

Title

{% if user %}

{{ user.user_name }}

{% else %}

hello world

{% endif %}

如果user不为空则输出 user.name 否则 输出hello world

@app.route('/query_user/')

def query_user(id):

user = None

if id == '1':

user = User(2, "zzm")

return render_template("query_user.html", user = user)

b4b68ca86a37a32fc85252a75cb46135.png

ca4ca45d18915a4b11040748443f3d29.png

4.模板循环

Title

{% for user in users %}

{{ user.user_id }}----{{ user.user_name }}

{% 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)

cc8ee6bda0ec78d05a3e739fa801657d.png

5.模板继承

以下代码省略HTML主体结构,只下body中的部分

先写一个base.html

这是头部

{% block content %}

{% endblock %}

这是尾部

然后在one_base.html中用extends 语法继承base.html页面,

然后再重写content中的内容

{% extends "base.html"%}

{% block content %}

这是第一页

{% endblock %}

@app.route('/one')

def one_base():

return render_template("one_base.html")

运行结果

e2eec76d90227c0306f4cc7eff11e477.png

三、消息提醒和异常处理

1.消息提醒

在网页中设置提醒的消息需要引入flash模块

from flask import flash

flash.html

{{ get_flashed_messages()[0] }}

@app.route('/flashDemo')

def flash_demo():

flash("hello world flash")

return render_template("flash.html")

ba95c06f22845b72f78d69126f563d01.png

2.异常处理

在别人输错网址的时候,服务器会返回一个404异常,将会返回一个浏览器的404网页。

我们可以进行异常处理,抛出自己写的404网页,这样用户体验比较好。

写个404.html

this is error

异常处理语法:

errorhandler() 括号里面填写错误代码

@app.errorhandler(404)

def not_fond(e):

return render_template("404.html")

这里随便输错一个网页,就弹出来了我们自己编写的404异常网页

4c433887c3259d68c69071479b2b8a1a.png

欢迎关注公众号:python黑科技

一起交流学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值