在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中:

  1. render=web.template.render("templates")
  2. class index:
  3. def GET(self):
  4. return reder.index("wolrd")

#templates是文件夹,到时把全部html文件放在templates文件夹下,如要用到的index.html

2:直接指定详细的文件,这种方法扩展行不好,

  1. hello=web.template.frender("templates/hello.html")
  2.  
  3. return hello("world")

3:使用字符串

  1. html="$def with (name)\n hello $name"
  2. hello=web.tempate.Template(html)
  3. return hello("wolrd")

================================================================

能够看到调用了template的三种方法:

  1. render=web.template.render("templates")仅仅指定html文件的路径
  2. render.index("world")
  3.  
  4. hello=web.tempalte.frender("templates/hello.html")指定了详细的html文件
  5. hello("world")
  6.  
  7. hello=web.template.Template(string)直接把字符串传入进去,
  8. hello("world")

================================================================

上面三种方法最经常使用的是第一中,render.index的方式,

================================================================

3:以下是python 在html文件里的基本的语法 

1:得到变量的值 ,注意仅仅是语法,没有太多的为什么

  1. $varible
  2. $(varible)
  3. ${varible}

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

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

  1. $ bug=True
  2. $ va=1
  3. <div>
  4. $var
  5. </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按键一般不会有问题

  1. $for i in range(10):
  2. i want eat $i apple(s)
  3.  
  4. $ a=4
  5. $while a<10:
  6. $a
  7. $ a+=1
  8.  
  9. $if a>10:
  10. hell $a
  11. $else:
  12. keep on ,you will do it
  13.  
  14. 一个for html应用中的样例,这样创建一个表
  15. <table>
  16. $for c in ["a", "b", "c", "d"]:
  17. <tr class="abc">
  18. <td>$index</td>
  19. <td>$c</td>
  20. </tr>
  21. </table>

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

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

  1. $def tr(value):
  2. <tr>
  3. $for i in value:
  4. <td>
  5. $i
  6. </td>
  7. </tr>
  8.  
  9. $def table(rows):
  10. <table>
  11. $for row in rows:
  12. $:row
  13. </table>
  14.  
  15. $ data=[['a', 'b', 'c'], [1, 2, 3], [2, 4, 6], [3, 6, 9] ]
  16.  
  17. $:table([tr(d) for d in data])

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

  1. $code:
  2. x = "you can write any python code here"
  3. y = x.title()
  4. z = len(x + y)
  5.  
  6. def limit(s, width=10):
  7. """limits a string to the given width"""
  8. if len(s) >= width:
  9. return s[:width] + "..."
  10. else:
  11. return s

回来到html

上面定义的变量在这里也能够用,

比如

$limit(x)



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

在html中

  1. $def with (title, body)
  2.  
  3. $var title: $title
  4. $var content_type: text/html
  5.  
  6. <div id="body">
  7. $body
  8. </div>

在python中

  1. >>> out = render.page('hello', 'hello world')
  2. >>> out.title
  3. u'hello'
  4. >>> out.content_type
  5. u'text/html'
  6. >>> str(out)
  7. '\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訪问呢?

样例例如以下:

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

这样在全部的html文件里都能够使用 makrdown这个函数了

感觉这个函数就像是builtin的一样,

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

import ,exec

訪问属性时不能用 _开头,

不能使用open,getattr,setattr这些函数

假设你的模板不小心用了上面的情况,会出现SecurityException 这个安全

异常

知道上面的事,你就能够在html中写python了,

在html中写python代码的语法和特点-----基于webpy的httpserver的更多相关文章

  1. 在Pycharm中写python代码时光标变粗

    在练习写python代码时,不小心摁了Insert键,结果光标变粗. 如下图所示: 原因: 和word一样,在编辑文本或代码时,有两种模式:改写和插入模式. 当我们在编辑文章或者是代码时,应该将模式设 ...

  2. sublime中写python代码

    SublimeREPL插件 这个是首先要安装的,此插件主要功能是为了实现交互,在安装后需要一些简单的配置 在Preferences--> Key Bindings--> user下添加如下 ...

  3. LaTeX中Python代码的语法高亮

    LaTeX中Python代码的语法高亮 本文中,"{}"中的字母为LaTeX或Python的包名,只有"Pygments"是Python的包,其他都是LaTeX ...

  4. 如何在batch脚本中嵌入python代码

    老板叫我帮他测一个命令在windows下消耗的时间,因为没有装windows那个啥工具包,没有timeit那个命令,于是想自己写一个,原理很简单: REM timeit.bat echo %TIME% ...

  5. [置顶] 如何在Python IDLE中调试Python代码?

    好久没有用Python了,居然忘记了怎么在Python IDLE中调试Python代码.百度了一下,然后还是写下来吧,以免以后又忘记了. 1. Set break point in the sourc ...

  6. 如何在Java中调用Python代码

    有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...

  7. 在Java中调用Python代码

    极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...

  8. VsCode写Python代码!这代码简直和大神一样规范!太漂亮了!

    VsCode写Python代码!这代码简直和大神一样规范!太漂亮了!    转 https://www.jianshu.com/p/636306763d89 VsCode虽然没有Pycharm的功能齐 ...

  9. 在notepad++中运行python代码

    #在notepad++中运行python代码 ''' 1.安装插件pyNPP, 2.允许插件pyNPP中的第一个和第二个选项即可,如果代码过少代码执行一闪而过,可能无法看到,可加入少量sleep时间即 ...

随机推荐

  1. 【每日一摩斯】-Troubleshooting: High CPU Utilization (164768.1) - 系列5

    Oracle(用户)进程 以下这些操作都是需要消耗大量CPU资源的:解析大型查询,存储过程编译或执行,空间管理和排序. 下面这几篇文章可以帮助采集关于使用高CPU资源的进程的更多信息: Note:35 ...

  2. 使用MVC模式开发一简单的销售额查询系统

    与上一篇比较,只改变了index.jsp文件中form的提交路径 <form action="ShowServlet" method="post"> ...

  3. EasyUI - SplitButton 分割按钮

    效果: html代码: <!--使用标签创建,直接使用即可,不必使用js代码--> <%--<a href="javascript:void(0)" id= ...

  4. Eclipse用法和技巧九:自动添加try/catch块2

    上一篇介绍了如何给未检查异常快速增加try/catch语句,这里在补充一点其他相关操作.有时候我们增加了try/catch之后还需要在加一个finally块,比如android上每次分配一个curso ...

  5. Windows8 Metro快捷键 | Win8迷

    Windows8 Metro快捷键 | Win8迷   Win + Q : 打开 搜索面板 Win + C : 打开屏幕右侧的Charms简化菜单 Win + 空格 : 切换输入语言和键盘布局  

  6. Android程序检测网络是否可用

    在做Android应用程序中,连接网络的时候,常常要用到检测网络状态是否可用,在这里分享一个比较好用的方法. 本人参考:http://blog.csdn.net/sunboy_2050/article ...

  7. 使用JDBC进行数据库的事务操作(2)

    本篇将讲诉如何使用JDBC进行数据库有关事务的操作.在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作. 似乎事务和批处理都可以一次同时执行多条SQL ...

  8. shell的特殊符号的表示

    shell中存在一些特殊的符号.这些符号可以帮助我们更好的写出shell来 1.特殊字符 符号          使用 输出 ,             枚举分隔符 .             当前目 ...

  9. flex中在basewidget中不能使用图表组件问题

    参考 http://blog.sina.com.cn/s/blog_51e3d0e70101hljz.html

  10. Spring4 MVC 多文件上传(图片并展示)

    开始需要在pom.xml加入几个jar,分别是 <dependency> <groupId>commons-fileupload</groupId> <art ...