zoukankan      html  css  js  c++  java
  • Flask 重定向到动态url

    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
  • 相关阅读:
    springboot和springcloud运行在外部tomcat
    kafka-线上单机broker扩容
    kafka集群部署和测试
    k8s-学习笔记2-容器部署nginx负载均衡
    logstash部署
    docker-学习笔记7-dockerfile
    kafka常用命令
    kafka-消费滞后(Lag)监控
    kibana-部署
    es-部署
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/11345348.html
Copyright © 2011-2022 走看看