Flask–路由

添加路由的两种方式

第一种

@app.route("/my_de")
def detail()

第二种(了解即可)

app.add_url_rule("/my_de",view_func=detail)

一. @app.route()中的参数

1.methods = [ ]:

当前url地址,允许访问的请求方式 类型为可迭代对象,允许八种http请求方式

@app.route("/info", methods=["GET", "POST"])
def student_info():
stu_id = int(request.args["id"])
return f"Hello Old boy {stu_id}"

2.endpoint = “ ”

路由Mapping地址对应视图函数,有点类似于django中的别名

from flask import url_for

@app.route("/info", methods=["GET", "POST"], endpoint="r_info")
def student_info():
print(url_for("r_info")) # /info
stu_id = int(request.args["id"])
return f"Hello Old boy {stu_id}"

3.strict_slashes=True

url地址结尾符“ / ”的控制False: 无论结尾 “ / ” 是否存在均可以访问, True: 结尾不允许是“ / ”, 类似与django中的APPEND_SLASH

# 访问地址 : /info
@app.route("/info", strict_slashes=True)
def student_info():
return "Hello Old boy info"

# 访问地址 : /infos or /infos/
@app.route("/infos", strict_slashes=False)
def student_infos():
return "Hello Old boy infos"

4.defaults={}

视图函数的参数默认值

from flask import url_for

@app.route("/info", methods=["GET", "POST"], endpoint="r_info", defaults={"nid": 100})
def student_info(nid):
print(url_for("r_info")) # /info
# stu_id = int(request.args["id"])
print(nid) #
return f"Hello Old boy {nid}"

5.redirect_to=“/index”

url地址重定向, 浏览器的请求返回为308

301和308都是永久重定向, 区别在于

  • 301 在重定向时允许改变请求方法
  • 308 在重定向时不允许改变请求方法,比如post请求被重定向时,redirect_to的url也为post请求方式,而301就有可能变成了get请求
# 访问地址 : /info 浏览器跳转至 /infos
@app.route("/info", strict_slashes=True, redirect_to="/infos")
def student_info():
return "Hello Old boy info"

@app.route("/infos", strict_slashes=False)
def student_infos():
return "Hello Old boy infos"

6.subdomain:

子域名前缀, subdoadmin=“car”, 这样可以得到car.xxx.com 不过还需要配置app.config["SERVER_NAME"] = "xxx.com"

app.config["SERVER_NAME"] = " xxx.com"

@app.route("/info",subdomain="car")
def student_info():
return "Hello Old boy info"

# 访问地址为: car.xxx.com/info

二. 动态参数路由

在url后定义一个参数接收,但是这种动态参数路由在url_for时,一定要将动态参数名+参数值添加进去,否则会抛出异常

from flask import url_for

# 访问地址 : http://127.0.0.1:5000/info/1
@app.route("/info/<int:nid>", methods=["GET", "POST"], endpoint="r_info")
def student_info(nid):
print(url_for("r_info",nid=2)) # /info/2
return f"Hello Old boy {nid}"

最新文章

  1. HTML案例—很讨巧的一种js+css制作hover模式展示二级菜单方法
  2. I/O Directory类
  3. 如何优化cocos2d程序的内存使用和程序大小
  4. iOS常用网络库之AFNetWorking
  5. 【Android】应用程序Activity启动过程分析
  6. UVA 10127题目描述
  7. PDO(数据访问抽象层)、pdo事务功能和预处理功能---2017-05-05
  8. VMwareTools安装失败提示找不到C headers和gcc目录
  9. Web安全学习计划
  10. Frame Interpolation
  11. js操作ListBox列表(select)内移动
  12. 自定义django-admin命令
  13. Python中的正则表达式(re)
  14. Python基础-python数据类型之元祖、字典(四)
  15. unity引用查找插件-ReferenceFinder
  16. [Day4]Switch语句、数组、二维数组
  17. docker实战系列之快速删除docker中的容器
  18. iOS---代理、协议、通知 详解
  19. [知乎]关于WindowsXPx64SP2系统的说明
  20. BZOJ2278 : [Poi2011]Garbage

热门文章

  1. URL去重
  2. jquery之DataTables的使用
  3. 【SQL模板】二.创建表视图模板TSQL
  4. 删除SVN版本控制目录
  5. 【转】MEF程序设计指南一:在应用程序中宿主MEF
  6. [SoapUI] Command-Line Arguments
  7. Jmeter中的XPath Assertion
  8. jquery判断显示的元素并获取显示元素数据
  9. 2018.10.04 NOIP模拟 排队(组合数学)
  10. 2018.09.19 atcoder Snuke's Coloring(思维题)