flask 高级编程-基础mgm娱乐场

  host可以指定为某一具体地址,也可以设为范指如host=’0.0.0.0’。为所有地址都可以被访问。也可以指定端口port=81。

View Code

  if的两层含义1)确保if下的语句只在入口文件内执行,当被其他的模块导入的话,
app.run是不会被执行的。

    本质:都是通过response的方式返回

五,入口文件的if判断

5、mysql安装(centos7)

二,简单的显图函数与路由。

  

from flask import Flask

'''
  引入flask包内的Flask模块,注现在PyCharm的flask是默认的,并不是在虚拟环境内的flask,
所以要设置到本虚拟环境下的flask。通过命令行 pipenv --verv可以查看虚拟环境下的目录。
'''
app=Flask(__name__)
'''实例化Flask,通常会内置变量做为参数。'''
app.run()
'''通过实例对象app的run方法来启动Web服务器'''

    (1)返回状态码,status code,200,404,301

    现在可以通过命令行来运行 >>>python  tngh.py

  15.3 response与重定向

from flask import Flask


app=Flask(__name__)

@app.route('/tngh')
def tngh():
    return 'tngh12dd3'
#app.add_url_rule('/tngh',view_func=tngh)

app.run(host='192.168.0.6',debug=True)
# -*- coding=utf-8 -*-

from flask import Flask

app = False(__name__)


@app.route('/hello')
def hello():
return 'Hello, World!'


app.run()
from flask import Flask


app=Flask(__name__)

#@app.route('/tngh')
def tngh():
    return 'tngh12dd3'
app.add_url_rule('/tngh',view_func=tngh)

app.run(debug=True)

  其中,MVC中的controller就是这里面的hello函数

四,配置文件

  yum -y install mysql57-community-release-el7-10.noarch.rpm #
安装mysql源

  asdf

    (1)浏览器访问url1地址,服务器接收到这次请求

三,外网(局域网)访问服务器。

View Code

from flask import Flask
from config import DEBUG
'''引入配置文件'''


app=Flask(__name__)

@app.route('/tngh')
def tngh():
    return 'tngh12dd3'
#app.add_url_rule('/tngh',view_func=tngh)

app.run(host='0.0.0.0',debug=DEBUG,port=81)
'''使用配置文件中的DEBUG'''

mgm娱乐场,  python -V

from flask import Flask

app=Flask(__name__)
app.config.from_object('config')
'''
通过app对象的config属性下的from_object方法引入配置文件,参数为模块路径
'''

@app.route('/tngh')
def tngh():
    return 'tngh12dd3'
#app.add_url_rule('/tngh',view_func=tngh)
#config本身就是字典dict的子类
app.run(host='0.0.0.0',debug=app.config['DEBUG'],port=81)
'''使用(读取)配置文件中的DEBUG'''

10、另一种路由注册方法

六,视图函数返回对象 response

  8.1 浏览器中输入http://127.0.0.1:5000/hello就能访问

from flask import Flask

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

@app.route('/tngh')
def tngh():
    return 'tngh12dd3'
#app.add_url_rule('/tngh',view_func=tngh)

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

View Code

 

8、兼容两种访问方式,带/和不带/

from flask import Flask

'''
  引入flask包内的Flask模块,注现在PyCharm的flask是默认的,并不是在虚拟环境内的flask,
所以要设置到本虚拟环境下的flask。通过命令行 pipenv --verv可以查看虚拟环境下的目录。
'''
app=Flask(__name__)
'''实例化Flask,通常会内置变量做为参数。'''
@app.route('/tngh')
def tngh():
    return 'tngh123'
'''
通过装饰器@来为tngh()函数定义一个路由,就可以使用http请求访问到tngh()函数。
route()内要传入一个路径做为参数 
视图tngh()相当于MVC中的C控制器'''
app.run(debug=True)
'''
debug=True 设置调试模式,开启自动重启(当修改源代码时不再需要手动开启Web服务)
通过实例对象app的run方法来启动Web服务器'''

    (4)当浏览器接收到返回之后,首先会去看状态码,如果是301或者302,浏览器会再次发送一个请求,请求地址为url2

  使用此方法时配置文件中的DEBUG必须要大写。

# -*- coding=utf-8 -*-

from flask import Flask

app = Flask(__name__)
app.config.from_object('config') # 载入配置文件,为模块路径


@app.route('/hello/')
def hello():
return 'Hello, World!'


app.run(host='0.0.0.0', debug=app.config['DEBUG'], port=8888)

    第二种路由方式,基由类

View Code

from flask import Flask

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

@app.route('/tngh')
def tngh():
    headers={
        'content-type':'text/plain'
    }
    return '<html></html>',404,headers
#app.add_url_rule('/tngh',view_func=tngh)

if __name__ =='__main__':
    app.run(host='0.0.0.0',debug=app.config['DEBUG'])
# -*- coding=utf-8 -*-

from flask import Flask, make_response

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


def hello():
    headers = {
        'content-type': 'application/json',
    }
    return '<html></html>', 200, headers

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


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

  配置文件使用方法二

mgm娱乐场 1mgm娱乐场 2

      配置文件使用方法一

  deactivate 退出虚拟环境

                         
2)在具体的flask框架内的含义,当我们开发环境下,启动的服务器为flask所自带的简单的服务器。但是如果项目部署到生产环境下,是不用使用flask自带的服务器的。生产环境下需要使用nginx+uwsgi来组合项目,nginx接收浏览器发来的请求,然后转发给uwsgi。生产环境下入口文件并不是手动执行的,而是uwsgi加载模块来启动的相关代码。所以在生产环境下,此文件并不是入口文件,只是被uwsgi加载的模块,所以在生产环境下,app.run是不会被执行的。如果在生产环境下没有了if判断,一但加载了此文件app.run就会被执行,生产环境下已经有了uwsgi做为服务器,而同时又启动了flask的自带的服务器,两个服务器是不可以同时存在的。

  app.run(host=’0.0.0.0′, debug=True, port=8888) # 修改端口号

一,一个最简单的Flask Web

# -*- coding=utf-8 -*-

from flask import Flask, make_response

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


@app.route('/hello')
def hello():
    headers = {
    'content-type': 'application/json',
    }
    return '<html></html>', 200, headers

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

     
上例只是一个空的Web服务器,没有任何实际意义。当有业务逻辑时要写一系列的视图函数。

  方法下面,添加app.add_url_rule(‘/hello’,
view_func=hello),类视图需要使用这种方式

  此时在浏览器中可以访问127.0.0.1:5000/tngh就可以了,

  15.2 返回的数据,封装成response对象

  通过app.add_url_rule来定义的路由,第一个参数为路由规则,第二个为视图函数。

  15.4 返回json

 

  su root  # 切换到root用户

    (4)return response

  15.1 视图函数

# -*- coding=utf-8 -*-

from flask import Flask, make_response

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


@app.route('/hello')
def hello():
    headers = {
        'content-type': 'text/plain'
    }
    response = make_response('<html></html>', 404)
    response.headers = headers
    return response

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

    set global validate_password_length=1;

View Code

  14.1
如果入口文件中增加了这个判断之后,能够确保if里面的语句只在入口文件执行;

  

3、安装flask

  python fisher.py

  

  

    (2)response = make_response(‘<html></html>’, 404)

  注释掉@app.route(‘/hello’)

  systemctl start mysqld.service # 启动

    显示:<html></html>

6、mysql基础用法

    显示:<html></html>

  /usr/local/bin/python3

  15.4 最方便的返回方式

不显示任何东西

  

12、正式环境不能开启调试模式原因

4、常用virtual命令

  pip freeze > requirements.txt 自动生成requirements.txt文件

# -*- coding=utf-8 -*-

from flask import Flask, make_response

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


@app.route('/hello')
def hello():
    headers = {
        'content-type': 'text/plain',
        'location': 'http://www.baidu.com'
    }
    response = make_response('<html></html>', 301)
    response.headers = headers
    return response

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

  14.3 部署到生产环境不会使用flask自带的服务器,而是nginx+uwsgi

  wget -i -c
http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
# 下载mysql安装包

mgm娱乐场 3mgm娱乐场 4

  virtualenv -p /usr/local/bin/python3 env

(2)注:

  yum -y remove mysql57-community-release-el7-10.noarch  #
卸载更新,因为安装了Yum
Repository,以后每次yum操作都会自动更新,需要把这个卸载掉

  app.run(debug=True)

# -*- coding=utf-8 -*-

from flask import Flask, make_response

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


@app.route('/hello')
def hello():
    headers = {
        'content-type': 'application/json',
    }
    response = make_response('{"a": 1, "name": "test"}', 200)
    response.headers = headers
    return response

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

  如果将config.py中的DEBUG改为Debug,读取app.config[‘Debug’]报错,from_object要求必须大写;

相关文章