python-Web-flask-路由和视图

1 路由和视图:

简介:

Flask框架包含两个核心:Werkzeug工具箱,Jinja2模板引擎

flask: 提供基本功能,属于轻量级

django: 提供相对完整功能,重量级

搭建虚拟环境

 

Helloworld :

#1.导入Flask类

from flask import Flask

#2.创建Flask对象接收一个参数__name__,它会指向程序所在的包

app = Flask(__name__)

#3.装饰器的作用是将路由映射到视图函数index

@app.route('/')

def index():

    return 'Hello World'

#4.Flask应用程序实例的run方法,启动WEB服务器

if __name__ == '__main__':

    app.run()

 

相关配置参数:

初始化参数:

app = Flask(__name__)

static_url_path静态文件访问路径,默认为:/ + static

static_folder静态文件存储的文件夹,默认为 static

template_folder模板文件存储的文件夹,默认为 templates

 

加载参数:

from flask import Flask

app = Flask(__name__)

# 配置对象,里面定义需要给 APP 添加的一系列配置

class Config(object):

    DEBUG = True

app.config.from_object(Config)# 从配置对象中加载配置

#app.config.from_pyfile('config.ini')# 从配置文件中加载配置

#app.config.from_envvar('FLASKCONFIG')# 加载指定环境变量名称所对应的相关配置

@app.route('/')

def index():

    return 'Hello World'

if __name__ == '__main__':

    app.run(host="0.0.0.0", port=5000, debug = True)

 

路由:

设置路由,路径,参数,请求方式

# 路由传递参数,整数,get或post方式

@app.route('/user/<int:user_id>',methods=['GET', 'POST'])

def user_info(user_id):

    return 'the num is %d' % user_id

 

响应:

# 生成json数据响应体

@app.route('/demo4')

def demo4():

    json_dict = {

        "user_id": 10,

        "user_name": "laowang"

    }

return jsonify(json_dict)

# 路由传递参数string

@app.route('/user/<int:user_id>')

def user_info(user_id):

    return 'hello %d' % user_id

# 重定向redirect(url_for(‘’,参))

@app.route('/demo5')

def demo5():

    # 使用 url_for 生成指定视图函数所对应的 url

return redirect(url_for('user_info', user_id=100))

# 渲染响应render_response(‘’,name=name)

 

转换器:

.系统自带转换器

DEFAULT_CONVERTERS = {

    'default':          UnicodeConverter,

    'string':           UnicodeConverter,

    'any':              AnyConverter,

    'path':             PathConverter,

    'int':              IntegerConverter,

    'float':            FloatConverter,

    'uuid':             UUIDConverter,

}

.自定义转换器

from flask import Flas

k#导入基类转换器

from werkzeug.routing import BaseConverter

app = Flask(__name__)

# 1.自定义类,继承自BaseConverter

class MyRegexConverter(BaseConverter):

    # 2.编写初始化方法, init方法, 接收两个参数, url_map, regex, 并初始化父类空间和子类空间

    def __init__(self,url_map,regex):

        super(MyRegexConverter, self).__init__(url_map)

        self.regex = regex

# 3.将自定义转换器类,添加到默认的转换列表中

app.url_map.converters['re'] = MyRegexConverter

#使用自定义转换器#接收3位整数

@app.route('/<re("\d{3}"):num>')

def hello_world(num):

    print("num = %s"%num)

    return "the num is %s"%num

#接收一个手机号

@app.route('/<re("1[345678]\d{9}"):mobile>')

def get_phone_number(mobile):

    return "the mobile is %s"%mobile

if __name__ == '__main__':

    app.run()

 

异常捕获:

from flask import Flask,abort

app = Flask(__name__)

@app.route('/game/<int:age>')

def play_game(age):

    #异常抛出

    abort(404)

    return "helloworld"

#异常捕获

@app.errorhandler(404)

def page_not_found(e):

    print(e)

    return "找不到服务器资源,服务器搬家了"

if __name__ == '__main__':

    app.run()

 

钩子:

请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:

# 在第一次请求之前调用,可以在此方法内部做一些初始化操作

@app.before_first_request

def before_first_request():

    print("before_first_request")

# 在每次请求之前调用,直接return之后那么就不会执行视图函数

@app.before_request

def before_request():

    print("before_request")

# 在执行完视图函数之后会调用,并且会把视图函数所生成的响应传入,可以在此方法中对响应做最后一步统一的处理

@app.after_request

def after_request(response):

    print("after_request")

    response.headers["Content-Type"] = "application/json"

    return response

# 请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息

@app.teardown_request

def teardown_request(e):

    print("teardown_request")

 

Request:

属性

说明

类型

data

记录请求的数据,并转换为字符串

*

form

记录请求中的表单数据

MultiDict

args

记录请求中的查询参数

MultiDict

cookies

记录请求中的cookie信息

Dict

headers

记录请求中的报文头

EnvironHeaders

method

记录请求使用的HTTP方法

GET/POST

url

记录请求的URL地址

string

files

记录请求上传的文件

*

转载于:https://www.cnblogs.com/person1-0-1/p/11400553.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装Flask 在命令行输入以下命令安装Flask: ``` pip install flask ``` 2. 创建一个Flask应用 创建一个名为app.py的文件,输入以下代码: ```python from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True) ``` 在命令行运行以下命令启动应用: ``` python app.py ``` 在浏览器访问 http://localhost:5000/ ,应该会看到 "Hello, World!" 的输出。 3. 添加路由视图函数 在app.py添加更多的路由视图函数来处理不同的URL请求。例如: ```python @app.route('/about') def about(): return 'This is the about page.' @app.route('/contact') def contact(): return 'This is the contact page.' ``` 4. 使用模板 在app.py文件所在目录创建一个名为templates的文件夹,用于存放HTML模板。 在templates文件夹创建一个名为home.html的文件,输入以下代码: ```html <!DOCTYPE html> <html> <head> <title>Home</title> </head> <body> <h1>Hello, {{ name }}!</h1> </body> </html> ``` 在app.py添加以下代码: ```python from flask import render_template @app.route('/home/<name>') def home_name(name): return render_template('home.html', name=name) ``` 在浏览器访问 http://localhost:5000/home/YourName ,应该会看到 "Hello, YourName!" 的输出。 5. 静态文件 在app.py文件所在目录创建一个名为static的文件夹,用于存放静态文件。 例如,在static文件夹创建一个名为style.css的文件,输入以下代码: ```css body { background-color: #f5f5f5; } h1 { color: red; } ``` 在home.html模板文件添加以下代码: ```html <!DOCTYPE html> <html> <head> <title>Home</title> <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}"> </head> <body> <h1>Hello, {{ name }}!</h1> </body> </html> ``` 在浏览器访问 http://localhost:5000/home/YourName ,应该会看到红色的标题和灰色的背景。 以上就是使用Flask创建一个简单的Web应用的基本步骤。根据实际需求,可以添加更多的功能和页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值