python学习之Flask框架(二)

简介: python学习之Flask框架(二)

request参数的使用


常用的request参数:

属性

说明

类型

values

记录请求的数据,并转换为字符串

*

form

记录请求中的表单数据

MultiDict

args

记录请求中的查询参数

MultiDict

cookies

记录请求中的cookie信息

Dict

headers

记录请求中的报文头

EnvironHeaders

method

记录请求使用的HTTP方法

GET/POST

url

记录请求的URL地址

string

files

记录请求上传的文件

*

下面是url、method、headers的简单使用:

from flask import Flask,request
app = Flask(__name__)
@app.route('/args',methods=['POST','GET'])
def index():
    url = request.url
    method  = request.method
    headers = request.headers.get('Content-Type')
    return f'hello == {url} == {method} == {headers}'
if __name__ == '__main__':
    app.run(debug=True)

url_for 函数的使用


通过函数反向找到路由地址

from flask import Flask,url_for
app = Flask(__name__)
@app.route('/index')
def index():
    return 'hello'
@app.route('/home/<int:uid>')
def home(uid):
    return f'hello{uid}'
@app.route('/show_rul')
def show_url():
    #第一个参数是函数的名字
    #url = url_for("home") 
    #第二次参数默认开始匹配路径参数了,匹配不上就会以查询参数进行处理
    url = url_for("home",uid=1001)
    return f'反向查找到的url地址:{url}'
if __name__ == '__main__':
    app.run(debug=True)

为什么选择url_for 而不选择直接在代码中拼 URL 的原因有两点:


  1. 1.将来如果修改了 URL ,但没有修改该 URL 对应的函数名,就不用到处去替换URL 。

  2. 2.url_for() 函数会转义一些特殊字符和 unicode 字符串,这些事情 url_for 会自动的帮我们转义。


响应——重定向


有两种重定向:


1.永久性重定向,此时http的状态码为301,用于旧网址废弃后需要转到新的网址。


2.暂时性重定向,此时http的状态码为302,表示页面暂时性的转跳。例如:需要登陆才能获取权限的网站,如果用户没有登录,则会重定向到登录页面。


flask中重定向


通过redirect(location,code=302)函数来实现,location表示需要定向到的url,code表示采用哪个重定向,默认为302(暂时性重定向),可以修改为301(永久性重定向)。

from flask import Flask,redirect,url_for
app = Flask(__name__)
@app.route('/login/')
def login():
    return f'登录页面'
@app.route('/info/')
def info():
    return redirect(url_for('login'),code=302)
if __name__ == '__main__':
    app.run(debug=True)

使用redirect函数时可以配合url_for函数使用可以有效提高效率,减少工作量。


响应——响应内容


返回字符串:

from flask import redirectd
@app.route('/return_str')
def return_str():
  return "hello!!"

返回JSON

from flask import jsonify
app.config['JSON_AS_ASCII'] = False
@app.route('/return_json1')
def return_json1():
  json_dict = {
    "msg_int": 10,
    "msg_str": "hello!!"
   }
  return jsonify(json_dict)
@app.route('/return_json2')
def return_json2():
  json_dict = {
    "msg_int": 10,
    "msg_str": "hello!!"
   }
  return json_dict

响应——自定义响应


需要导入Response或make_response,可以对状态码、主体部分和响应头进行修改。


具体代码如下:

from flask import Flask,Response,make_response
app = Flask(__name__)
@app.route('/')
def index():
    return Response('hello!!!!',status=500)
app.route('/home/')
def home():
    resp = make_response('创建response对象')
    resp.status = 666
    return resp
if __name__ == '__main__':
    app.run(debug=True)
相关文章
|
1天前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
1天前
|
JSON 数据可视化 测试技术
python+requests接口自动化框架的实现
通过以上步骤,我们构建了一个基本的Python+Requests接口自动化测试框架。这个框架具有良好的扩展性,可以根据实际需求进行功能扩展和优化。它不仅能提高测试效率,还能保证接口的稳定性和可靠性,为软件质量提供有力保障。
16 7
|
3天前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
7天前
|
存储 程序员 Python
Python学习的自我理解和想法(2)
今日学习Python第二天,重点掌握字符串操作。内容涵盖字符串介绍、切片、长度统计、子串计数、大小写转换及查找位置等。通过B站黑马程序员课程跟随老师实践,非原创代码,旨在巩固基础知识与技能。
|
6天前
|
程序员 Python
Python学习的自我理解和想法(3)
这是学习Python第三天的内容总结,主要围绕字符串操作展开,包括字符串的提取、分割、合并、替换、判断、编码及格式化输出等,通过B站黑马程序员课程跟随老师实践,非原创代码。
|
3天前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。
|
2天前
|
存储 安全 索引
Python学习的自我理解和想法(8)
这是我在B站千锋教育学习Python的第8天,主要内容是元组。元组是一种不可变的序列数据类型,用于存储一组有序的元素。本文介绍了元组的基本操作,包括创建、访问、合并、切片、遍历等,并总结了元组的主要特点,如不可变性、有序性和可作为字典的键。由于开学时间紧张,内容较为简略,望见谅。
|
3天前
|
存储 索引 Python
Python学习的自我理解和想法(4)
今天是学习Python的第四天,主要学习了列表。列表是一种可变序列类型,可以存储任意类型的元素,支持索引和切片操作,并且有丰富的内置方法。主要内容包括列表的入门、关键要点、遍历、合并、判断元素是否存在、切片、添加和删除元素等。通过这些知识点,可以更好地理解和应用列表这一强大的数据结构。
|
3天前
|
索引 Python
Python学习的自我理解和想法(5)
这是我在B站千锋教育学习Python的第五天笔记,主要内容包括列表的操作,如排序(`sort()`、``sorted()``)、翻转(`reverse()`)、获取长度(`len()`)、最大最小值(`max()`、``min()``)、索引(`index()`)、嵌套列表和列表生成(`range`、列表生成式)。通过这些操作,可以更高效地处理数据。希望对大家有所帮助!
|
9天前
|
安全 程序员 Python
Python学习的自我理解和想法(1)
本篇博客记录了作者跟随B站“黑马程序员”课程学习Python的第一天心得,涵盖了`print()`、`input()`、`if...else`语句、三目运算符以及`for`和`while`循环的基础知识。通过实际编写代码,作者逐步理解并掌握了这些基本概念,为后续深入学习打下了良好基础。文中还特别强调了循环语句的重要性及其应用技巧。