url_for() 函数是动态构建一个网址给特定的功能是非常有用的。该函数接受函数的名称作为第一个参数,并接受一个或多个关键字参数,每个参数对应于URL的变量部分。

以下脚本演示了使用 url_for() 函数。

from flask import Flask, redirect, url_for
app = Flask(__name__) @app.route('/admin')
def hello_admin():
return 'Hello Admin' @app.route('/guest/<guest>')
def hello_guest(guest):
return 'Hello %s as Guest' % guest @app.route('/user/<name>')
def hello_user(name):
if name =='admin':
return redirect(url_for('hello_admin'))
else:
return redirect(url_for('hello_guest',guest = name)) if __name__ == '__main__':
app.run(debug = True)

  

上面的脚本有一个函数 用户(名称) ,它接受来自URL的参数值。

hello_user() 函数检查参数接收匹配 “admin” 与否。如果匹配,则使用 url_for() 将应用程序重定向到hello_admin() 函数,否则将该接收的参数作为guest参数传递给 hello_guest() 函数。

保存上面的代码并从Python shell运行。

打开浏览器并输入URL - http:// localhost:5000 / user / admin

浏览器中的应用程序响应是 -

Hello Admin

在浏览器中输入以下URL - http:// localhost:5000 / user / mvl

应用程序响应现在变为 -

Hello mvl as Guest

其它:


  • 关于url_for函数解析:
url_for('hello_guest',guest = name)
看一下函数的定义:


url_for函数有2个参数,hello_guest代表视图函数的名字,另一个则是**values关键字参数,它的值应该是key = value形式,如果直接传值就会报下面这样的错。

python会把name当作一个位置参数,而不是关键字参数



  • **values可选参数的变量名应该与url_for指向的视图函数(hello_guest)中的变量名(guest)保持一致,否则会报运行时错误:werkzeug.routing.BuildError,flask会给出提示你是否忘记了关键字变量名是guest


如果视图函数的名字也写错呢?
报错如下:
werkzeug.routing.BuildError
werkzeug.routing.BuildError: Could not build url for endpoint 'hello_guaaaest' with values ['a']. Did you mean 'hello_guest' instead?


文章出处:http://codingdict.com/article/4868

Flask 重定向到动态url的更多相关文章

  1. flask之配置文件的加载和动态url的使用

    七行代码实现一个flask app from flask import Flask app = Flask(__name__) @app.route('/') def helloworld(): re ...

  2. flask动态url规则

    动态URL规则 URL规则可以添加变量部分,也就是件更符合同规则的URL抽象成一个URL模式. @app.route('/item/<id>') def item(id): return ...

  3. 如何利用动态URL提升SEO及处理业务逻辑

    如果你正在建设一个新网站或者对现有网站重新设计,我们认为应该将网站的 URL 转换为用户友好的 URL,或搜索引擎友好的 URL,这类 URL 也称为语义 URL(Semantic URL).哪些UR ...

  4. 关于动态URL地址设置静态形式

    动态URL地址:http://station.com/index.php?c=play&a=index&id=12345 静态URL地址:http://station.com/play ...

  5. django"动态网页","动态url","调试方法"

    一.动态网页 其实只是每次刷新时,获取最新时间而已 1.urls.py from django.conf.urls import patterns, url, include urlpatterns ...

  6. springboot集成shiro和开涛的动态url问题

    我出现的问题就是一旦/**=authc不管放到前面还是后面都会把所有的资源全部拦截,css和js都访问不到,只需要把开涛的动态url代码改一下就行了(如上图)

  7. stark组件之处理函数动态url构造(五)

    在这个组件中有内置的4个处理函数,它们都有自己对应的url,那么它们的url是怎么构造的呢? ... urlpatterns = [ re_path('list/$', self.wrapper(se ...

  8. Spring Security 动态url权限控制(三)

    一.前言 本篇文章将讲述Spring Security 动态分配url权限,未登录权限控制,登录过后根据登录用户角色授予访问url权限 基本环境 spring-boot 2.1.8 mybatis-p ...

  9. 动态URL是什么?动态URL有什么特点?

    动态URL是什么动态URL就是动态页面,动态链接,即指在URL中出现“?”这样的参数符号,并以aspx.asp.jsp.php.perl.cgi为后缀的url. 动态URL有什么特点1.在建设反向链接 ...

随机推荐

  1. Bootstrap selectpicker 强制向下

    selectpicker的方向是自适应的,但是有些界面,我们需要强制向下,可以使用属性data-dropup-auto data-dropup-auto="false" 官网上的o ...

  2. WOJ#4709 迷路

    WOJ#4709 迷路 题目描述 dolls意外得到了一张藏宝图,于是他踏上了寻找宝藏的道路.在走了许多许多步,回到同一个位置以后,dolls确定自己迷路了.dolls十分生气,他觉得自己这么英明圣武 ...

  3. C# DataTable与实体的相互转换

    using System; using System.Collections.Generic; using System.Data; using System.Reflection; namespac ...

  4. Nodejs的模块化

    Node.js中的模块化 好处: 复用性高,一次定义,多次使用 前端模块化 AMD AMD的实现需要使用 require.js CMD CMD的实现需要使用 sea.js [ 不更新 ] Common ...

  5. Linux--shell grep与正则表达式--04

    一.grep程序 Linux下有文本处理三剑客:grep.sed.awk grep:文本 行过滤工具 sed:文本 行编辑器(流编辑器) awk:报告生成器(做文本输出格式化) 1.grep grep ...

  6. PyCharm使用技巧总结

    PyCharm高频使用快捷键 快速修复:ALT + ENTER 搜索: 双击Shif 垂直分隔窗口: ALT + V 另起一行: SHIFT + ENTER 删除当前插入符所在的行: Ctrl + Y ...

  7. javaweb各种框架组合案例(九):springboot+tk.mybatis+通用service

    一.项目结构 二.pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  8. python面向对象--类的内置方法

    #isinstance(obj,cls)判断obj是否是类cls的实例 #issubclass(cls,cls1)判断cls是否是cls1的子类或派生类 class Foo: pass class B ...

  9. hdu 4625 Dice(概率DP)

    Dice Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  10. ps:图层的选择

    接着我们建立一个名为nose的新层,颜色标记为蓝,画上一个扁椭圆形的鼻子,这样就算完成了一个简单人脸的绘制.此时在图层调板可以看到刚才所建立的所有图层.如下左图. 在图层调板中每个图层的最左边有一个眼 ...