内容:

1.基础的flask框架示例

2.flask配置文件

3.flask路由系统

4.请求和响应

5.模板

 

flask框架预备知识:https://www.cnblogs.com/wyb666/p/9460598.html

flask框架详细学习:http://www.cnblogs.com/wupeiqi/articles/7552008.html 

 

 

 

1.基础的flask框架示例

(1)基础flask框架示例程序结构

flask框架基础

其中app.py是主程序,utils.py是功能函数模块(log),templates文件夹中是HTML文件

 

(2)代码

程序功能:访问'/'显示欢迎信息和链接,访问'/message'显示留言板,然后可以用get提交数据,post提交数据,post提交的数据最后将显示在页面上

app.py:

 1 from flask import (
 2     Flask,
 3     render_template,
 4     request,
 5     redirect,
 6     url_for,
 7 )
 8 from utils import log
 9 
10 
11 # 先要初始化一个 Flask 实例
12 app = Flask(__name__)
13 
14 # message_list 用来存储所有的 message
15 message_list = []
16 
17 
18 # 定义路由和路由处理函数的方式如下
19 # ==========================
20 # 用 app.route 函数定义路由,参数是一个 path 路径
21 # 下一行紧跟着的函数是处理这个请求的函数
22 # @ 是一个叫装饰器的东西, 现在无必要知道具体的原理, 只要用它就好了
23 # 注意 methods 参数是一个 list,它规定了这个函数能接受的 HTTP 方法  默认是GET
24 @app.route('/', methods=['GET'])
25 def hello_world():
26     return '<h1>Hello wyb666</h1><br><a href="/message">message</a>'
27 
28 
29 @app.route('/message')
30 def message_view():
31     log('请求方法', request.method)
32     # render_template 读取并返回 templates 文件夹中的模板文件
33     # messages 是传给模板的参数,这样就能在模板中使用这个变量
34     return render_template('message_index.html', messages=message_list)
35 
36 
37 # 这个路由函数只支持 POST 方法
38 @app.route('/message/add', methods=['POST'])
39 def message_add():
40     log('message_add 请求方法', request.method)
41 
42     # 把POST请求的数据生成一个 dict 存到 message_list 中去
43     msg = {
44         'content': request.form.get('msg_post', ''),
45     }
46     message_list.append(msg)
47 
48     # 重定向:
49     return redirect('/message')
50     # 一般来说,我们会用 url_for 生成路由  注意url_for的参数是路由函数的名字(格式为字符串)
51     # return redirect(url_for('message_view'))
52 
53 
54 # 运行服务器
55 if __name__ == '__main__':
56     config = dict(
57         debug=True,         # debug 模式可以自动加载你对代码的变动, 所以不用重启程序
58         host='localhost',   # 指定域名
59         port=80,            # 指定端口
60     )
61     app.run(**config)

utils.py:

 1 # 一些工具函数
 2 import time
 3 
 4 
 5 # 用 log 函数把所有输出写入到屏幕中 方便debug
 6 def log(*args, **kwargs):
 7     formats = '%Y/%m/%d %H:%M:%S'
 8     value = time.localtime(int(time.time()))
 9     dt = time.strftime(formats, value)
10     print(dt, *args, **kwargs)

 

message_index.html:

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <!-- 指明字符编码为 utf-8 否则中文会乱码 -->
 5     <meta charset="utf-8">
 6     <title>留言板</title>
 7 </head>
 8 <body>
 9     <h1>留言板</h1>
10     <form action="/message" method="GET">
11         这是一个发送 GET 请求的表单
12         <br>
13         <textarea name="msg"></textarea>
14         <br>
15         <button type="submit">用 GET 提交表单</button>
16     </form>
17 
18     <form action="/message/add" method="POST">
19         这是一个发送 POST 请求的表单
20         <br>
21         <textarea name="msg_post"></textarea>
22         <br>
23         <button type="submit">用 POST 提交表单</button>
24     </form>
25     <!-- 下面是使用模板的办法 -->
26     {# 这是 Jinja2 模板的注释语法,这样的注释并不会在生成的 HTML 代码中出现 #}
27     {# {% %} 里面的是语句 #}
28     {# {{ }} 里面的是引用变量 #}
29     <!-- 注意 m 本身是一个字典,但是你可以用 . 的语法来引用 -->
30     <!-- 这是 Jinja2 模板的功能 -->
31     {% for m in messages %}
32         <div>{{ m.content }}</div>
33     {% endfor %}
34 </body>
35 </html>

 

 

2.flask配置文件

(1)flask默认配置如下:

 1 flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为:
 2     {
 3         'DEBUG':                                get_debug_flag(default=False),  # 是否开启Debug模式
 4         'TESTING':                              False,                          # 是否开启测试模式
 5         'PROPAGATE_EXCEPTIONS':                 None,                          
 6         'PRESERVE_CONTEXT_ON_EXCEPTION':        None,
 7         'SECRET_KEY':                           None,
 8         'PERMANENT_SESSION_LIFETIME':           timedelta(days=31),
 9         'USE_X_SENDFILE':                       False,
10         'LOGGER_NAME':                          None,
11         'LOGGER_HANDLER_POLICY':               'always',
12         'SERVER_NAME':                          None,
13         'APPLICATION_ROOT':                     None,
14         'SESSION_COOKIE_NAME':                  'session',
15         'SESSION_COOKIE_DOMAIN':                None,
16         'SESSION_COOKIE_PATH':                  None,
17         'SESSION_COOKIE_HTTPONLY':              True,
18         'SESSION_COOKIE_SECURE':                False,
19         'SESSION_REFRESH_EACH_REQUEST':         True,
20         'MAX_CONTENT_LENGTH':                   None,
21         'SEND_FILE_MAX_AGE_DEFAULT':            timedelta(hours=12),
22         'TRAP_BAD_REQUEST_ERRORS':              False,
23         'TRAP_HTTP_EXCEPTIONS':                 False,
24         'EXPLAIN_TEMPLATE_LOADING':             False,
25         'PREFERRED_URL_SCHEME':                 'http',
26         'JSON_AS_ASCII':                        True,
27         'JSON_SORT_KEYS':                       True,
28         'JSONIFY_PRETTYPRINT_REGULAR':          True,
29         'JSONIFY_MIMETYPE':                     'application/json',
30         'TEMPLATES_AUTO_RELOAD':                None,
31     }
flask默认配置

相关文章:

  • 2022-01-21
  • 2021-08-04
  • 2021-05-28
猜你喜欢
  • 2021-06-17
  • 2021-11-06
  • 2021-07-23
  • 2021-08-31
  • 2021-06-24
  • 2021-11-12
  • 2021-04-16
相关资源
相似解决方案