Flask学习

Flask学习(一)基础简介

1. 虚拟环境使用

相同的库在不同的项目中用到的版本不一致,为了维护方便,就可以通过虚拟环境来解决这种问题。

2. 创建虚拟环境

  1. 创建 项目文件夹Flask,并在同目录下创建envs文件夹
    在这里插入图片描述

  2. 添加envs文件的环境变量,环境变量名固定为 “WORKON_HOME”,添加此环境变量是为了生成虚拟环境的envs文件夹
    在这里插入图片描述

  3. Win + R打开运行窗口,输入“cmd”回车,打开命令提示符,进入项目文件夹Flask,安装pipenv(以上述创建的文件夹为例)

>h:
>cd Flask
// 安装 pipenv 包
pip install pipenv
  1. 创建虚拟环境
// 生成虚拟环境指令,并进入创建的虚拟环境
pipenv shell
// 创建成功后显示为以下格式
(Flask-ST9PKd0K) H:\Flask>
// 在此路径下安装的包都在创建的虚拟环境中
(Flask-ST9PKd0K) H:\Flask>pip install Flask -i https://pypi.douban.com/simple
  1. PyCharm软件中,虚拟环境的设置:File->settings->Project Interpreter->Add->Existing environment选择刚刚创建的虚拟环境,应用保存即可。
    在这里插入图片描述

3.Flask简介

Flask是一款非常流行的Python Web框架,出生于2010年,作者Arimin Ronacher。
Flask 特点:

  1. 微框架、简洁、只做他需要做的,给开发者提供了很大的扩展性;
  2. Flask和相应的插件写的会很好,用起来很方便;
  3. 开发效率非常高;

4. Pipfile文件简介

[[source]]
name = "pypi"
url = "https://pypi.org/simple"  // 指定国内pip源,不然下载会很慢
verify_ssl = true

[dev-packages]  // 开发环境

[packages]  // 生产环境

django = "*"  // *表示最新版本

[requires]  // python版本
python_version = "3.6"

5.简单的一个Flask程序

from flask import Flask  // 从flask框架中导入Flask类

app = Flask(__name__)  // 传入__name__初始化一个Flask实例

@app.route('/')  // app.route装饰器,映射url和执行函数。以下代码是将根url映射到了hello_world函数上
def hello_world():
	return 'Hello World!' 
	
if __name__ == '__main__':
	app.run(host='0.0.0.0',port=9000)  // 运行项目,host=0.0.0.0可以让其他电脑也可以访问到该网站,port指定访问的端口。

6.设置debug模式

默认情况下flask不会开启debug模式,开启debug模式后,flask会在每次保存代码时自动的重新载入代码,如果代码有错误会在终端进行提示
开启debug模式的方式

  1. 直接在应用对象上设置
app.debug=True
app.run()
  1. 在config属性中设置
app.config.update(DEBUG=True)
app.run()
app.config.update({'DEBUG':'True'})
app.run()
  1. 在执行run方法的时候,传递参数进去
app.run(debug=True)

7.URL和视图

  1. 数据约束类型
    string: 默认的数据类型,接受没有任何斜杠/的字符串
    int : 整形

    // int:整型数据
    @app.route('/page/<int:vid>')
    def article(vid):
        return '这是第{}页'.format(vid) 
    // http://127.0.0.1:5000/page/5
    

    string: 默认的数据类型,接受没有任何斜杠/的字符串。

    // string:默认的数据类型,接受没有任何斜杠‘/’的字符					 串。‘/’是作为参数的分割符,不能在后面添加‘/’。 
    @app.route('/content/<string:vid>/') 
    // 严格结尾形式:后面加‘/’,这样运行时会在结尾自动添加‘/’,添加与不添加是两个不同的url。
    def content(vid):
    	return '文章的内容是{}'.format(vid)
    	// http://127.0.0.1:5000/content/anhui/
    

    float: 浮点型。
    path: 和string类似,但是可以传递斜杠/。

    // path:和string类似,但可以传递斜杠‘/’
    @app.route('/path/<path:vid>/')
    def path(vid):
    	return '网络地址为{}'.format(vid)
    // http://127.0.0.1:5000/path/www.baidu.com/
    

    uuid: uuid类型的字符串。
    any: 可以指定多种路径

    // any:可以指定多种路径
    @app.route('/<any(class,course,lesson):url_path>/') 
    // 后面的url_path是固定写法
    def information(url_path):
    	return '当前访问内容为{}'.format(url_path)
    // http://127.0.0.1:5000/class/
    

    “?=”构造路由方式

    // 不制定子路径来传递参数,用‘?=’来传递参数,构造路由方式
    @app.route('/address')
    def browser():
    	return request.args.get('id')  
    // 如果是post方法,则可以通过request.form.get()来获取
    // http://127.0.0.1:5000/address?id=baidu
    
  2. 构造URL
    url_for()函数接收两个及以上的参数,接收函数名作为第一个参数,接受对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数。
    通过构建URL的方式而选择直接在代码中拼URL的原因:
    如果修改了url,但没有修改该url对应的函数名,就不用去替换url了;
    url_for()函数会自动转义一些特殊字符和unicode字符串

    from flask import Flask, url_for
    
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
    // 使用url_for()通过url映射的函数名,去获得对应的url
        print(url_for('article', vid=1, title='python', pag=9, value=10.5))  // /txt/1/?title=python&pag=9&value=10.5
        return 'hello world!'
    
    @app.route('/txt/<vid>/')
    def article(vid):
       // 通过‘hello_world’函数,获得该函数对应的url
        print(url_for('hello_world', next='/image'))  // /?next=%2Fimage
        return '文章内容是{}'.format(vid)
        
    if __name__ == '__main__':
        app.run(debug=True)
    

	







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值