在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) >= width:
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了,

在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. hihoCoder 1014trie树(字典树)

    hihoCoder 1014 题目提示已经很清楚了~ 贴代码…… #include <iostream> #include <cstdio> #include <cstr ...

  2. c++中一个类所占用的空间

    看到阿里的一道笔试题: #pragma pack(2) class A { int i; union U { char buff[13]; int i; }u; void foo() { } type ...

  3. linux脚本:shell, 判断输入参数的个数(命令行)

    if [ $# != 3 ] ; thenecho "USAGE: $0 from to"echo " e.g.: $0 ~/oucaijun/from ~/oucaij ...

  4. 调用QQ截图

    var SHExecInfo: SHELLEXECUTEINFO; begin //截图前隐藏主程序窗口 Form1.Hide; //等待截图执行完成 SHExecInfo.cbSize := siz ...

  5. Qt Creator键盘快捷键速查

    原地址:http://bbs.qter.org/forum.php?mod=viewthread&tid=904&extra=page%3D2 一般操作的键盘快捷键 操作 快捷键 操作 ...

  6. Spring Configuration Check Unmapped Spring configuration files found

    Spring Configuration Check Unmapped Spring configuration files found 项目中有xml文件,但没有被用IntelliJ 导入现有工程时 ...

  7. SPSS Modeler数据挖掘项目实战(数据挖掘、建模技术)

    SPSS Modeler是业界极为著名的数据挖掘软件,其前身为SPSS Clementine.SPSS Modeler内置丰富的数据挖掘模型,以其强大的挖掘功能和友好的操作习惯,深受用户的喜爱和好评, ...

  8. 最长公共子序列python实现

    最长公共子序列是动态规划基本题目,以下依照动态规划基本步骤解出来. 1.找出最优解的性质,并刻划其结构特征 序列a共同拥有m个元素,序列b共同拥有n个元素,假设a[m-1]==b[n-1],那么a[: ...

  9. 调用函数的ALV、面向对象的ALV设置带选择列

    这个就是通过对应的选择列,实现对ALV数据的选择,在调用函数的ALV和面向对象的ALV实现方法存在差异,下面讲两者的方法:1)调用函数的ALV.   通过 SLIS_LAYOUT_ALV-BOX_FI ...

  10. 基于visual Studio2013解决面试题之0405和最大的子矩阵

     题目