(1) flask初识

准备工作

  1. 安装 python 环境
  2. 检验 python 和 pip 是否安装好(pip是安装python包的工具)
    (python到官网上下载安装升级,pip更新命令python -m pip install --upgrade pip)
  3. 新建项目文件夹 mkdir fisher
  4. (安装virtualenv)(虚拟环境可以隔离不同的版本) # 可以直接第五步
  5. 安装使用pipnv (pip install pipenv)(全局安装pipenv)
    (使用pipenv创建一个与项目绑定的虚拟环境。cd fisher 然后pipenv install) ,(pipenv shell进入虚拟环境)。 # pipenv是Python官方推荐的包管理工具。可以说,它集成了virtualenv, pip和pyenv三者的功能。
  6. 安装各种包
    (例如flask :pipenv install flask)

一些常用命令

退出虚拟环境exit
进入虚拟环境pipenv shell
卸载包 eg: pipenv uninstall flask
使用pipenv graph命令可以看到依赖树

一些工具

开发工具Pycharm(VScode) (Pycharm 在断点调试和自动重启服务器支持较好)
Xampp(MySQL)
Navicat(数据库可视化管理工具)

第一个flask应用

from flask import Flask

app = Flask(__name__)    #类的实例化

@app.route('/hello')  # 使用 route() 装饰器来告诉 Flask 触发函数的 URL 。 /hello 可以访问
#@app.route('/hello/')  #兼容/  把/hello 重定向到/hello/
def hello():
    return 'hello world'

app.run()

route装饰器 :可以使用Flask应用实例的route装饰器将一个URL规则绑定到 一个视图函数上,优雅方便但不够灵活
基于类的视图(即插视图),基于函数的视图

另一种路由注册方式

add_url_rule

from flask import Flask

app = Flask(__name__) 

def hello1():
    return 'hello China'

app.add_url_rule('/hello1',view_func = hello1)

app.run()

一般都是用route装饰器,但即插视图,必须使用add_url_rule

运行方式

#app.run()  #直接运行
#app.run(debug=True) #开启调试模式
#app.run(host='192.168.2.136',debug=True) #指定ip地址,仅本机,网卡为192.168.2.136的可访问
#app.run(host='0.0.0.0',debug=True) #起它ip地址也可以访问
#app.run(host='0.0.0.0',debug=True,port=1)  #改端口

关于端口取值

  • 一般用到的是1到65535,其中0不使用,1-1023为系统端口,也叫BSD保留端口;
  • 1024-65535为用户端口, 又分为: BSD临时端口(1024-5000)和BSD服务器(非特权)端口(5001-65535).
  • 0-1023: BSD保留端口,也叫系统端口,这些端口只有系统特许的进程才能使用;
  • 1024-5000: BSD临时端口,一般的应用程序使用1024到4999来进行通讯;
  • 5001-65535: BSD服务器(非特权)端口,用来给用户自定义端口.

一般的应用程序就是指系统中的ftp,apache,ssh之类的应用程序。而用户自定义的应用程序就是你自己在系统上开发的应用程序。属于你的东西。操作系统不会把它作为一个通用的功能,集成到系统去。

在生产环境下

同一个包中另建一个config.py模块,配置如下:

DEBUG = True   #配置文件全大写,因为小写的找不到
#注意事项: DEBUG默认为False

生产环境下

from flask import Flask

__author__ = 'weilai'

app = Flask(__name__) 
app.config.from_object('config')

@app.route('/hello/')
def hello2():
    return 'hello world'

if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=app.config['DEBUG'],port=1)

生产环境下使用的是: nginx + uwsgi
因为是调用这个模块,所以if name 下面不会运行,这样就不会启用flask内置服务器

视图函数中return与普通函数的区别

from flask import Flask,make_response #创建response对象

__author__ = 'weilai'

#普通函数的return
def hello1():
    return 'hello weilai'

app = Flask(__name__)
app.config.from_object('config')

@app.route('/hello')
def hello():
    headers = {
        'content-type':'text/plain',   #把它当作普通字符串
        'location': 'https://www.baidu.com'  # 301重定向
        #'content-type': 'application/json'  #json字符串 #下面response就返回的json字符串
    }
    response = make_response('',301)  #301是状态码,只是一个标识,不会影响内容
    response.headers = headers
    return response
    #return '',301,headers #上面3行也可以这样简写

if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=app.config['DEBUG'],port=1)

视图函数不仅仅返回字符串,还返回一下 。。 等
#status code 200,404,301
#content-type http headers
#content-type = text/html (默认情况)

#本质上返回的 Response对象

你可能感兴趣的:((1) flask初识)