flask鱼书网制作二(yushu.im)

Posted 智趣智学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flask鱼书网制作二(yushu.im)相关的知识,希望对你有一定的参考价值。

host=’0.0.0.0’表示可以接受万网的访问

debug=True开启了flask调试模式

在fisher新建一个配置文件config.py

这个配置文件主要是解决debug=True,应为我们是不希望客户之间看到我们网站在浏览器中直接映射错误信息的

载入配置文件app.config.from_object(‘config’),其中括号里面的config是模块的路径,本例中由于config.py和我们现在编辑的fisher.py处于同一目录下,所以说config.py模块的路径就是config本身

读取配置文件debug=app.config[‘DEBUG’]

总结一下:

1配置文件,2载入文件,3读取文件

配置文件config.py程序如下:

DEBUG = True

载入文件(fisher.py)

app.config.from_object('config')

读取文件

app.run(debug = app.config[‘DEBUG’])

fisher.py完整代码如下:

'''
created by
七月 on 2018/1/26.
'''
from flask import Flask
from config import DEBUG
__author__ =
'七月'

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

#@app.route('/hello')

def hello():

   
return 'lai, Qiyue'

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

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

 

视图函数返回的不仅仅是字符串本身,它还包括状态码statuscode,例如200,404,301

还有content-type和http headers,如果我们不指定content-type,那么系统默认的参数是:

Content-type=text/html

以上视图函数所有的内容都会返回一个response对象,创建一个response对象可以使用下列方法:

From flask importmake_response

@app.route(‘/hello/’)

def hello():

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

上面也说了,默认情况下content-type= text/html,既然是text/htm,所以说内容‘<html></html>’是不会被显示出来的,因为它是一个空标签。如果要显示这个内容,就需要修改默认值,修改的方法如下:

from flask import flask, make_response

def hello():

headers = {‘content-type’:’text/plain’}

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

response.headers= headers

return response

完整代码如下:

'''
created by
七月 on 2018/1/26.
'''
from flask import Flask,make_response
from config import DEBUG
__author__ =
'七月'

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

#app.add_url_rule('/hello/',view_func=hello)
app.run(host='0.0.0.0',debug=app.config['DEBUG'], port=81)

重定向:

我们将上述程序中的response里面的状态码404改为301,301的状态码意思是重定向,接着我们在headers里面添加一条’location’:’http://www.baidu.com’,这时网页将会直接跳转到百度的首页。

代码如下:

'''
created by
七月 on 2018/1/26.
'''
from flask import Flask,make_response
from config import DEBUG
__author__ =
'七月'

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
#app.add_url_rule('/hello/',view_func=hello)

app.run(host='0.0.0.0',debug=app.config['DEBUG'], port=81)
程序改良:
因为视图函数返回的是response,对于这种默认的返回值,我们可以进行简写,可避免代码臃肿
Return ‘内容’,状态码,headers
'''
created by
七月 on 2018/1/26.
'''
from flask import Flask,make_response
from config import DEBUG
__author__ =
'七月'

app = Flask(__name__)

app.config.from_object('config')


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

    return'<html></html>',301, headers

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

app.run(host='0.0.0.0',debug=app.config['DEBUG'], port=81)
  
知识点普及:
假如我们把视图函数接口是为我们的小程序或者app来提供数据的话,通常我会把它叫做api,api的数据通常是json格式的,因此在headers里我们就要制定这个格式
Headers = {‘content-type’:’application/json’}
Web返回的本质都是字符串,不论是api也好,网页也罢,控制的因素都是content-type
Content-type用于解释我们接收到的信息以一种怎么的格式进行输出

以上是关于flask鱼书网制作二(yushu.im)的主要内容,如果未能解决你的问题,请参考以下文章

python_flask小项目实例

Python Flask高级编程

Python Flask高级编程

Python Flask高级编程

鱼书项目模块化总结

python Flask - 数据库片段