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}"

Flask系列03--Flask的路由 app.route中的参数, 动态参数路由的更多相关文章

  1. Flask从入门到放弃1:路由app.route()

    Flask从入门到放弃1: Flask中的路由app.route(): 参考来源:http://python.jobbole.com/80956/ https://www.raspberrypi.or ...

  2. Flask系列(二)Flask基础

    知识点回顾 1.flask依赖wsgi,实现wsgi的模块:wsgiref(django),werkzeug(flask),uwsgi(上线) 2.实例化Flask对象,里面是有参数的 app = F ...

  3. flask框架(五): @app.route和app.add_url_rule参数

    @app.route和app.add_url_rule参数: rule, URL规则 view_func, 视图函数名称 defaults=None, 默认值,当URL中无参数,函数需要参数时,使用d ...

  4. Flask系列06--(中间件)Flask的特殊装饰器 before_request,after_request, errorhandler

    一.使用 Flask中的特殊装饰器(中间件)方法常用的有三个 @app.before_request # 在请求进入视图函数之前 @app.after_request # 在请求结束视图函数之后 响应 ...

  5. Flask系列(四)Flask实现简单页面登陆

    from flask import Flask,render_template,request,redirect,session app = Flask(__name__,template_folde ...

  6. Flask系列(五)Flask实现分页

    一.flask分页组件 from urllib.parse import urlencode,quote,unquote class Pagination(object): ""& ...

  7. Flask系列(六)Flask实例化补充及信号

    一.实例化补充 instance_path和instance_relative_config是配合来用的. 这两个参数是用来找配置文件的,当用app.config.from_pyfile('setti ...

  8. 定义Vue-router的动态路由,获取传过来的动态参数

    设置:在router目录下的index.js文件中,对path属性加上/:id 获取:使用router对象的params.id

  9. 【Python】Flask系列-URL和视图笔记

    1.学习目标 熟悉Flask相关知识. 熟悉web开发流程. 能独立开发Flask项目. 2.环境配置 Python虚拟环境安装 因为python的框架更新迭代太快了,有时候需要在电脑上存在一个框架的 ...

随机推荐

  1. Loitor_产品(一)

    源码:https://github.com/loitor-vis/vi_sensor_sdk 注意:以下要一直在管理员权限 1.C++ 示例程序的编译步骤 先确认你的系统已经成功安装了OpenCV. ...

  2. Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this scrip

    在运行phpize时出现的错误 > /data/php/bin/phpize Configuring for: PHP Api Version: 20131106 Zend Module Api ...

  3. maven的下载

    1.maven的下载地址:http://maven.apache.org/download.cgi.下载3.3.9版本(在选择下载的版本是要与JDK契合). 2.下载之后,解压的文件放的位置尽量不要有 ...

  4. Spring框架的事务管理的基本概念

    1. 事务:指的是逻辑上一组操作,组成这个事务的各个执行单元,要么一起成功,要么一起失败! 2. 事务的特性 * 原子性 * 一致性 * 隔离性 * 持久性 3. 如果不考虑隔离性,引发安全性问题 * ...

  5. Mysql的内存优化

     老师  vi mysqld_safe# executing mysqld_safe 后面增加export LD_PRELOAD=/usr/local/lib/libtcmalloc.so  可以做一 ...

  6. JVM家族史考【转】

    说起Java虚拟机,许多Java程序员都会潜意识地把它与Sun(虽然太阳已然西落,但永远值得被记忆) HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA JRockit和IBM J9,但大 ...

  7. filter 死循环(tomcat 启动完成 ,自动执行filter.dofilter,导致tomcat 启动超时) , tomcat 启动和 servers 启动 不同

    package com.diancai.interceptor; import java.io.IOException; import javax.servlet.Filter; import jav ...

  8. 8.14 右键自定义菜单 更加iframe 内容高度调整 iframe高度 js定时

    <div class="main_contain" id="z_div" style="position: relative;"> ...

  9. part1:9-windows与Linux文件共享

    1.winSCP 它是一个windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它主要功能就是在本地与远程计算机间安全的复制文件. 前提:Linux与windows能相互pin ...

  10. 流程控制 if while for 已及数字类型 进制转换

    一:if 语句 语法一:ifif 条件: code1 code1 code1 语法二:if ...else ... if 条件: code1 code1 code1else: code1 code1 ...