flask-get/post/线程隔离g对象/钩子函数
2021-05-16 15:31
标签:文件 set route roo dict lse mode port hide get: 通过request.args来获取 post: post通过flask.request.form获取 线程隔离g对象: 绑定对象: 使用:绑定后,会保存数据,在一次请求中所有的代码的地方均可使用,哪怕不是一个文件。只限一次请求内,访问下一个页面就不会存在了。 钩子函数: 装饰器, 可以把需设置为钩子函数的代码放在每一次视图函数执行之前执行 上下文处理器会返回一个字典,字典中的key会被当成变量来渲染。 (每次请求的html中的username都会被自动填充进这个key的value值) flask-get/post/线程隔离g对象/钩子函数 标签:文件 set route roo dict lse mode port hide 原文地址:https://www.cnblogs.com/clairexxx/p/9748845.htmlfrom flask import Flask, request
@app.route(‘/search/‘)
def search():
# 获得参数字典
args = request.args
print(args) # ImmutableMultiDict([(‘q‘, ‘hello‘)])
print(args.get(‘q‘)) # hello
return ‘search‘
1 from flask import Flask, url_for, redirect, render_template, session, request
2 import config
3 from db import db
4 from models import Article
5
6 app = Flask(__name__)
7 app.config.from_object(config)
8
9 @app.route(‘/‘)
10 def index():
11 return render_template(‘index.html‘)
12
13 # 默认的视图函数采用get,如果使用post则需要注明
14 @app.route(‘/login‘, methods=[‘GET‘, ‘POST‘])
15 def login():
16 if request.method == ‘GET‘:
17 return render_template(‘login.html‘)
18 else:
19 username = request.form.get(‘username‘)
20 password = request.form.get(‘password‘)
21 return ‘%s, %s‘ % (username, password)
22
23 if __name__ == ‘__main__‘:
24 app.run()
1 DOCTYPE html>
2 html lang="en">
3 head>
4 meta charset="UTF-8">
5 title>{% block title %}{% endblock %}title>
6 style>
7 .nav{
8 background: #DAD435;
9 height: 65px;
10 }
11 ul{
12 overflow: hidden;
13 }
14 ul li{
15 float: left;
16 list-style: none;
17 padding: 0 10px;
18 line-height: 65px;
19 }
20 ul li a{
21 color: #ffffff;
22 }
23 style>
24 {% block head %}{% endblock %}
25 head>
26 body>
27 div class="nav">
28 ul>
29 li>a href="#">首页a> li>
30 li>a href="#">发布问答a> li>
31 li>a href="#">注册a> li>
32 li>a href="{{ url_for(‘login‘) }}">登录a> li>
33 li>a href="{{ url_for(‘search‘)}}">搜索a> li>
34 ul>
35 div>
36 {% block main %}{% endblock %}
37
38 body>
39 html>
1 {% extends ‘base.html‘ %}
2
3 {% block title %}
4 登录页面
5 {% endblock %}
6
7 {% block main %}
8 form action="{{ url_for(‘login‘) }}" method="post">
9 table>
10 tbody>
11 tr>
12 td>用户名:td>
13 td>input type="text" placeholder="请输入用户名" name="username">td>
14 tr>
15 tr>
16 td>密码:td>
17 td>input type="text" placeholder="请输入密码" name="password">td>
18 tr>
19 tr>
20 td>td>
21 td>input type="submit" value="登录">td>
22 tr>
23
24
25 tbody>
26 table>
27 form>
28 {% endblock %}
from flask import g
g.username = ‘root‘ # 把username绑定到全局,所有地方都可以使用
# 在utils.py
from flask import g
def login_log():
print(g.username)
@app.before_request
def my_before_request():
print(‘before all request‘)
@app.context_processor
def my_context_process():
username = session.get(‘username‘)
return {‘username‘: username}
上一篇:深入了解Python--元组
下一篇:JS中this的四种用法
文章标题:flask-get/post/线程隔离g对象/钩子函数
文章链接:http://soscw.com/index.php/essay/86314.html