flask-get/post/线程隔离g对象/钩子函数
2021-05-16 15:31
阅读:533
标签:文件 set route roo dict lse mode port hide
get:
通过request.args来获取
from flask import Flask, request @app.route(‘/search/‘) def search(): # 获得参数字典 args = request.args print(args) # ImmutableMultiDict([(‘q‘, ‘hello‘)]) print(args.get(‘q‘)) # hello return ‘search‘
post:


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 %}
post通过flask.request.form获取
线程隔离g对象:
from flask import g
绑定对象:
g.username = ‘root‘ # 把username绑定到全局,所有地方都可以使用
使用:绑定后,会保存数据,在一次请求中所有的代码的地方均可使用,哪怕不是一个文件。只限一次请求内,访问下一个页面就不会存在了。
# 在utils.py from flask import g def login_log(): print(g.username)
钩子函数:
- before_request:
装饰器, 可以把需设置为钩子函数的代码放在每一次视图函数执行之前执行
@app.before_request def my_before_request(): print(‘before all request‘)
- context_processor:
@app.context_processor def my_context_process(): username = session.get(‘username‘) return {‘username‘: username}
上下文处理器会返回一个字典,字典中的key会被当成变量来渲染。
(每次请求的html中的username都会被自动填充进这个key的value值)
flask-get/post/线程隔离g对象/钩子函数
标签:文件 set route roo dict lse mode port hide
原文地址:https://www.cnblogs.com/clairexxx/p/9748845.html
上一篇:深入了解Python--元组
下一篇:JS中this的四种用法
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:flask-get/post/线程隔离g对象/钩子函数
文章链接:http://soscw.com/index.php/essay/86314.html
文章标题:flask-get/post/线程隔离g对象/钩子函数
文章链接:http://soscw.com/index.php/essay/86314.html
评论
亲,登录后才可以留言!