zoukankan      html  css  js  c++  java
  • flask中的重定向,渲染,反转视图函数

      在学习flask中,重定向,渲染,反转老是不怎么明白,今天明白了其中的点了,来给大家分享下

      rend_templete()这个函数就是一个渲染的作用,渲染html的东西。

      url_for是反转视图函数的,比如

    @app.route('/')
    
    def index():
        return "this is a page"
    

      url_for通过index函数返回的是/页面,注意返回的是一个路由,是在定义好的路由的页面返回 / 的是一个路由,可以用print(url_for('index')) 结果应该是/

      而重定向,重定向可以配合着url_for()进行使用,这样的话,大家可以思索下,为什么是配合着url_for而不是直接跳转到路由的地方

      

      解答:

      以后项目需要改路由的时候,直接改路由就好了,不需要改内置函数,这样比较方便。

       在写路由的时候,我们可以看到路由中有变量的操作,这样对变量的操作,是否可以加一个限制?可以的,

    比如,写进去一个id,设置一个int类型。


    @app.route('/') def index(): return "this is a page" @app.route('/detail/<int :id>/') def detail(id): return "%s "% id 

      这个来自于flask手册的内容

    int 接受整数
    float 同 int ,但是接受浮点数
    path 和默认的相似,但也接受斜线

      我们也可以自定义一个限制的变量

    from werkzeug.routing import  BaseConverter
    #导入一个BaseConverter,可以按住ctrl+鼠标左键点进去看看。
    #再声明一个类继承BaseConverter,继承之后再把这个规则添加上就可以了
    
    class TelephoneConvert(BaseConverter):
    
        regex = r'1[456]d{9}'
    
    #regex是一个正则匹配的东西,想研究的可以百度搜索下
    
    
    #把规则添加到BaseConverter中去
    app.url_map.converters['tel'] = TelephoneConvert
    
    #下面做个测试
    @app.route('/telephone/<tel:my_tel>/')
    def tel(my_tel):
        return  "the telephone is %s" %my_tel

      这个例子就很好的说明了,在开发的时候是可以自定义一个类进行添加的,后面会遇到传递参数的问题,其实传递参数也不难,要一开始就理解flask中url变量这个知识点,理解透了自然就懂了。关键点就是参数传递,传递时候在return rend_templetes or url_for or redirect后面加上就行了。

      补充一些零碎的东西:
      1.当想要设置成内网访问的时候,需要在app.run()里面加上host = '0.0.0.0'

      2.如果想要更改端口,那么再加上port='端口号'。注意修改端口启动的时候,不要以flask自带的run,进行启动,在终端中用 python app.py 中启动。这样启动的结果就会以你想要的端口号进行启动了。

      3.可以设置一个dubug = True,这样flask进行调试的时候,就不需要每次都关闭再重新进行启动了。

       ----------------------------------------再次补充----------------------------------------------------------------------------------------------

      平常用的重定向是redirect()暂时性重定向,还有一个是永远重定向。暂时性重定向是302,永远重定向是301。我会了之后再进行补充。

  • 相关阅读:
    随便说说
    郁闷
    请各栏目的负责人,开始整理自己栏目的文章
    祝博客园生日快乐
    Windows Live Writer中打开博客日志(最新版可以支持打开3000以内的日志)
    编译器优化对齐(字节对齐)
    HDlock 锁住硬盘的解决方式
    linux中env,export, set的区别
    System Volume Information 文件夹权限控制
    BOOL与bool的区别(bool不是c的关键字,c++中bool也不是int)
  • 原文地址:https://www.cnblogs.com/Triangle-security/p/11337934.html
Copyright © 2011-2022 走看看