zoukankan      html  css  js  c++  java
  • html中写python注意事项

    在html文件里写python语法的内容,的注意事项:

    1:python程序中的变量通过以下方法传入到html:

    1:通过全局变量 :全局变量是不须要用$def with语法实现传递的,仅仅要定义了
    在html中就能够用,样例例如以下:
    ===================================================================

    #模板公共变量,以下能够定义全部的html文件都要用到的变量 ,不须要复杂的
    $def with (va,vb)
    t_globals = {
        'datestr': web.datestr,
        'cookie': web.cookies,
        "loginform": login,
        "gposts":model.get_posts,
    }
    #指定模板文件夹,并设定公共模板,base="base"设定共用的base.html模板,
    在./templates/base.html这个路径 找到这个文件
    render = web.template.render('templates', base='base', globals=t_globals)
    =========================================================
    2:通过在python程序中在render时传入 ,样例例如以下:
    =========================================================

    在python文件里,
    render=web.template.render("./")
    class index:
    def GET(self):
    abc="world"
    render.index(name=abc)
    在index.html文件里:
    $def with (name)
    hello $name
    ===========================================================
    能够看到上面的样例是在python文件里对index()函数传入了name,
    而在index.html文件里,要定义一个暂时变量,接受这个传入的变量 
    abc是python中的变量的名字
    name是html文件里变量的名字,
    在render.index(name=abc)实现了变量的传递 ,
    注意:在 python中render.index(a,b)能够传递多个变量 
    那么在 html文件里就要声明相应的暂时变量 $def with (va,vb)
    ===========================================================

    2:使用模板的几种方法:

    1:直接使用html文件,并向index.html文件传入python变量 ,样例例如以下,
    在python中:
    render=web.template.render("templates")
    class index:
      def GET(self):
    	return reder.index("wolrd")
     #templates是文件夹,到时把全部html文件放在templates文件夹下,如要用到的index.html
    2:直接指定详细的文件,这种方法扩展行不好,
     hello=web.template.frender("templates/hello.html")
    
    return hello("world")
    3:使用字符串
    html="$def with (name)\n hello $name"
    hello=web.tempate.Template(html)
    return hello("wolrd")
    ================================================================
    能够看到调用了template的三种方法:
    render=web.template.render("templates")仅仅指定html文件的路径 
    render.index("world")
    
    hello=web.tempalte.frender("templates/hello.html")指定了详细的html文件
    hello("world")
    
    hello=web.template.Template(string)直接把字符串传入进去,
    hello("world")
    ================================================================
    上面三种方法最经常使用的是第一中,render.index的方式,
    ================================================================

    3:以下是python 在html文件里的基本的语法 
    1:得到变量的值 ,注意仅仅是语法,没有太多的为什么 

    $varible
    $(varible)
    ${varible}

     

    2:在html文件里创建新的变量 ,肯定是在赋值时才会创建新的变量 啊

    语法例如以下,$ 加上空格 加上变量名,空格非常重要

    $ bug=True
    $ va=1
    <div>
    $var
    </div>

     

    3: 在取变量的值的时候 ,你会看到两种语法:

    第一种:    $a
    另外一种:    $:a
    默认的python会使用web.websafe filter对变量做HTML-encoding.就是第一种方式,另外一种方法不会对变量a做html-encoding

     

    4: \ 这个符号的有点意思,会使多行的内容,仅仅显示一行

    hello \
    wolrd
    注意:要在\ 这个符号后面立即敲enter,要不然 \的特殊含义会消失,并且会一起显示出来

     

    5:问你个问题,怎样在html文件里显示$这个符号(由于给webpy当特殊的用了)

    答案非常easy,输入两个$$即可了
    美元的符号是$$
    亲,上面仅仅会显示一个$哦

     

    6:在html中怎样写python风格的凝视呢,我说的不是<!这种凝视哦>

    $#这是凝视,你在浏览器中是看不到的,webpy把这部分给filter了

     

    7:到了控制流部分了, 注意的面的i want这一句的缩进,要大于两个空格,

    你用tab按键一般不会有问题

    $for i in range(10):
       i want  eat  $i apple(s) 
    
    
    $ a=4
    $while a<10:
       $a
       $ a+=1
    
    
    $if a>10:
       hell $a
    $else:
       keep on ,you will do it
    
    
    一个for 在 html应用中的样例,这样创建一个表
    <table>
    $for c in ["a", "b", "c", "d"]:
        <tr class="abc">
            <td>$index</td>
            <td>$c</td>
        </tr>
    </table>

     

    8:其他一些实用的东西 如,$def

    还能够在html中定义函数,这是多么方便的东西

    $def tr(value):
    	<tr>
    	$for i in value:
    		<td>
    		$i
    		</td>
    	</tr>
    
    
    $def table(rows):
    	<table>
    	$for row in rows:
    	   $:row
    	</table>
    
    
    $ data=[['a', 'b', 'c'], [1, 2, 3], [2, 4, 6], [3, 6, 9] ]
    
    
    $:table([tr(d) for d in data])

     

    9:另一个奇妙的 keyword code,全部的python代码都能够写在code 块以下:

    $code:
        x = "you can write any python code here"
        y = x.title()
        z = len(x + y)
    
    
        def limit(s, width=10):
            """limits a string to the given width"""
            if len(s) >= 
                return s[:width] + "..."
            else:
                return s

    回来到html
    上面定义的变量在这里也能够用,
    比如
    $limit(x)

    10:var块,这是个比較难懂的东东,看以下的代码
    在html中

    $def with (title, body)
    
    $var title: $title
    $var content_type: text/html
    
    <div id="body">
    $body
    </div>

    在python中

    >>> out = render.page('hello', 'hello world')
    >>> out.title
    u'hello'
    >>> out.content_type
    u'text/html'
    >>> str(out)
    '\n\n<div>\nhello world\n</div>\n'

    能够看到varkeyword的作用是把在 html中定义的变量,传回到python程序中,
     python就能够依据这些内容做很多其它的处理,

     

    11:在html文件里能够訪问的builtin 函数 和变量 ,经常使用的函数都是

    能訪问的,如max,min,range,
    True,False也是能识别的,
    与builtin相应的一个概念是详细应用程序的globals变量或是函数,
    怎样使用这些globals变量或是函数能够被全部的html templates訪问呢?
    样例例如以下:

    import web
    import markdown
    globals={"markdown":markdown.markdown}
    render=web.template.render("tempaltes",globals=globals)

    这样在全部的html文件里都能够使用 makrdown这个函数了
    感觉这个函数就像是builtin的一样,

     

    12:出于安全考虑,以下的命令不能在html模板中出现 

    import ,exec
    訪问属性时不能用 _开头,
    不能使用open,getattr,setattr这些函数
    假设你的模板不小心用了上面的情况,会出现SecurityException 这个安全
    异常
    知道上面的事,你就能够在html中写python了,

  • 相关阅读:
    价值观
    周记 改
    周记
    C语言问卷调查
    icon踩坑记录
    console.log(a)和console.log(window.a)的区别?
    记录一次微信二次分享的优化过程
    在jQuery中使用自定义属性
    10个JS技巧
    日常工作总结 2019/10/10
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/13795961.html
Copyright © 2011-2022 走看看