在html中写python代码的语法和特点-----基于webpy的httpserver
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了,
转载于:https://www.cnblogs.com/mengfanrong/p/3929507.html
在html中写python代码的语法和特点-----基于webpy的httpserver相关推荐
- 在Linux命令行终端中写python代码的简单操作
Linux终端中的操作均是使用命令行来进行的.因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境中将python用起来. 打开命令行窗口 打开命令行窗口的快捷键如下: ...
- 在vim中写python程序_在Vim中运行Python代码
在Vim中运行Python代码 我正在使用Vim编写Python代码,每次我想运行我的代码时,我都会在Vim中输入: :w !python 这令人沮丧,所以我一直在寻找一种更快的方法来在Vim中运行P ...
- python函数式编程读取数据时出现错误_写 Python 代码不可不知的函数式编程技术...
原标题:写 Python 代码不可不知的函数式编程技术 选自 Medium 作者:Raivat Shah 参与:魔王.Jamin 本文对 Python 中的函数式编程技术进行了简单的入门介绍. 近来, ...
- java怎么调用python_如何在Java中调用Python代码
Jython(原JPython),是一个用2113Java语言写的Python解释5261器.在没有第三方模块的情况下4102,通常选择利用Jython来调用1653Python代码,它是一个开源的J ...
- excel中使用python代码
这次我们会介绍如何使用xlwings将Python和Excel两大数据工具进行集成,更便捷地处理日常工作. 说起Excel,那绝对是数据处理领域王者般的存在,尽管已经诞生三十多年了,现在全球仍有7.5 ...
- 会写Python代码的人工智能Kite宣布支持Linux,“程序猿”要失业了?
Kite,那个能为"程序猿"们减少写Python代码时的重复劳动的"自动完成AI",近日宣布,为了回应社区的反馈,它已经添加了对Ubuntu 16.04+.De ...
- 用Python代码自己写Python代码,竟如此简单
用Python代码自己写Python代码,竟如此简单 Python作为一门功能强大且使用灵活的编程语言,可以应用于各种领域,具有"无所不能"的特质. Python甚至可以代替人,自 ...
- 天秀,“手机” 也可以写Python代码了!
大家好,我是小五???? 不得不说,对于写代码这件事,真的必须就是在电脑上才会有很好的体验.手机上写Python代码,那种感觉确实不敢想. 但是总有粉丝私信我: 有没有手机端写Python代码的软件呢 ...
- ChatGPT写python代码实录
ChatGPT写python代码实录 print('hello world') 众所周知,咱们程序员学习编程是为了世界好. 所以,咱们就从hello world开始. 然后是一个杨辉三角 def ge ...
- Python Excel中使用python代码
Python Excel中使用python代码 如果哪一天excel可以用python去写代码该是多好的一件事情啊~ 本人想在excel中运行py代码 按以下步骤行动 pip install xlwi ...
最新文章
- 发现优质免费的区块链在线教程资源,包含PPT和视频资源,全部免费
- JavaScript引擎研究与C、C++与互调用(转)
- php 判断是否gzip,PHP网站判断页面文件或图片是否经过gzip压缩
- linux分区模型,linux设备驱动模型详解.pdf
- keras冻结_【连载】深度学习第22讲:搭建一个基于keras的迁移学习花朵识别系统(附数据)...
- ubuntu安装百度网盘
- [D3D] - 用PerfHUD来调试商业游戏
- java类使用其他类的变量_如何将java类中的变量加载到其他类
- 第二课计算机ppt,第二课计算机系统.ppt
- 关于Spring的几个问题
- 码云上传项目时出现空目录的解决办法
- c语言用指针访问简单变量,关于C语言指针,个人认为最经典、最简单的一个应用...
- 10的28次方C语言,c语言编程测定28的28次方有多少位
- MATLAB 指定线型和颜色
- 移动安全-IOS越狱
- 地理社交网络中基于多目标组合优化的空间感知影响力联合最大化
- acdream 1401 Lempel-Ziv Compression
- 脑机接口技术使瘫痪病人重获运动能力,4D打印技术已经到来!|技术前沿洞察...
- 【原创】PHP程序员的技术成长规划
- 纳税信用等级怎么划分 激励惩戒措施有哪些
热门文章
- 【LeetCode】205 Isomorphic Strings (c++实现)
- 在虚拟主机上部署ASP.NET AJAX 1.0 Beta的程序集
- 前端技术栈---Vue(1)安装与初始化
- linux中 ECShop的文件不能写
- 深度学习打造精准推荐系统,细说国美互联网 AI 发展的进击之路
- Introduction to Conditional Random Fields
- 最近面试有感,不要耍小聪明,面试官都是开了上帝视角的
- Netty-Pipeline组件
- xadmin可能是帮助我完成django网站的一大助力
- python常用的十进制、16进制、字符串、字节串之间的转换