在html中写python代码的语法和特点-----基于webpy的httpserver
在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的更多相关文章
- 在Pycharm中写python代码时光标变粗
在练习写python代码时,不小心摁了Insert键,结果光标变粗. 如下图所示: 原因: 和word一样,在编辑文本或代码时,有两种模式:改写和插入模式. 当我们在编辑文章或者是代码时,应该将模式设 ...
- sublime中写python代码
SublimeREPL插件 这个是首先要安装的,此插件主要功能是为了实现交互,在安装后需要一些简单的配置 在Preferences--> Key Bindings--> user下添加如下 ...
- LaTeX中Python代码的语法高亮
LaTeX中Python代码的语法高亮 本文中,"{}"中的字母为LaTeX或Python的包名,只有"Pygments"是Python的包,其他都是LaTeX ...
- 如何在batch脚本中嵌入python代码
老板叫我帮他测一个命令在windows下消耗的时间,因为没有装windows那个啥工具包,没有timeit那个命令,于是想自己写一个,原理很简单: REM timeit.bat echo %TIME% ...
- [置顶] 如何在Python IDLE中调试Python代码?
好久没有用Python了,居然忘记了怎么在Python IDLE中调试Python代码.百度了一下,然后还是写下来吧,以免以后又忘记了. 1. Set break point in the sourc ...
- 如何在Java中调用Python代码
有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...
- 在Java中调用Python代码
极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...
- VsCode写Python代码!这代码简直和大神一样规范!太漂亮了!
VsCode写Python代码!这代码简直和大神一样规范!太漂亮了! 转 https://www.jianshu.com/p/636306763d89 VsCode虽然没有Pycharm的功能齐 ...
- 在notepad++中运行python代码
#在notepad++中运行python代码 ''' 1.安装插件pyNPP, 2.允许插件pyNPP中的第一个和第二个选项即可,如果代码过少代码执行一闪而过,可能无法看到,可加入少量sleep时间即 ...
随机推荐
- B树的实现与源代码二(删除源代码)
int BTreeMaximum( BNode *x ) { if ( x->leaf ) { return x->key[x->size - 1]; } else { return ...
- 时间戳timestamp
1 时间戳 数据库中自动生成的 唯一的 二进制的数据,通常用作给数据表的行添加版本戳的机制. timestamp与时间和日期无关. timestamp存储大小为8字节. 一个数据表只能有一个times ...
- MEAN栈开发
Nodejs之MEAN栈开发(二)----视图与模型 2016-06-02 08:30 by stoneniqiu, 92 阅读, 2 评论, 收藏, 编辑 上一节做了对Express做了简单的介绍, ...
- Windows Azure入门教学系列 (三):创建第一个Worker Role程序
在开始本教学之前,请确保你从Windows Azure 平台下载下载并安装了最新的Windows Azure开发工具.本教学使用Visual Studio 2010作为开发工具. 步骤一:创建解决方案 ...
- Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码
主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码: #include <stdio.h> #include <sys/types. ...
- android用shape画虚线,怎么也不显示
一直以为android的shape能画直线.虚线.矩形,圆形等.画直线也就算了.用一个view设一下高度和颜色,就能够出来一条直线了.所以说这个对我来说常常不用,圆形是能够,看看我应用里的消息提 ...
- Swift - 一步步教你使用SpriteKit创建开发游戏项目
一,什么是SpriteKit SpriteKit是苹果公司官方出品,用于制作2D游戏的框架.这个框架具备了图形渲染和动画的功能.可以使图像或者精灵(sprite)动 起来.SpriteKit的渲染方式 ...
- ajax和json详解
responseText 属性以字符串形式返回HTTP响应. responseXML 属性以XML形式返回HTTP响应. JSON.stringify 函数 (JavaScript) 将 Jav ...
- 百度贴吧客户端(Android)网络通信行为分析
百度贴吧安卓客户端网络通信行为分析 本文由CSDN-蚍蜉撼青松[主页:http://blog.csdn.net/howeverpf]原创,转载请注明出处! 一.实验环境与结果概述 1.1 实验环境 ...
- Swift - 动画效果的实现方法总结(附样例)
在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimations.这三个方法都是类方法. 一,使用 ...