Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
家好,我是DD,已經(jīng)是封閉在家的第51天了!
最近一直在更新Java新特性(https://www.didispace.com/java-features/)和IDEA Tips(https://www.didispace.com/idea-tips/)兩個(gè)原創(chuàng)專欄,其他方向內(nèi)容的動(dòng)態(tài)關(guān)注少了。昨天天晚上刷推的時(shí)候,瞄到了這個(gè)神奇的東西,覺(jué)得挺cool的,拿出來(lái)分享下:
相信你看到圖,不用我說(shuō),你也猜到是啥了吧?html里可以跑python代碼了!
看到好多Python公眾號(hào)已經(jīng)開(kāi)始猛吹未來(lái)了,但乍看怎么覺(jué)得有點(diǎn)像JSP?或者一些模版引擎?是進(jìn)步還是倒退呢?與其瞎想,不如仔細(xì)看看這個(gè)東東的能力吧!
根據(jù)官方介紹,這個(gè)名為PyScript的框架,其核心目標(biāo)是為開(kāi)發(fā)者提供在標(biāo)準(zhǔn)HTML中嵌入Python代碼的能力,使用 Python調(diào)用JavaScript函數(shù)庫(kù),并以此實(shí)現(xiàn)利用Python創(chuàng)建Web應(yīng)用的功能。
看到介紹里提到了調(diào)用JavaScript函數(shù)庫(kù)的能力,看來(lái)跟JSP或者模版引擎還是有區(qū)別的。
官方給了一個(gè)例子,可以幫助我們觀的感受這個(gè)開(kāi)發(fā)框架的能力,不妨跟著DD看看,它能做啥吧!
第一個(gè)案例,hello world
代碼很簡(jiǎn)單,就下面這幾行。你只需要?jiǎng)?chuàng)建一個(gè)html文件,然后復(fù)制進(jìn)去就可以了。
|
保存好之后,在瀏覽器里打開(kāi)就能看到這樣的頁(yè)面了:
回頭再看看這個(gè)html里的內(nèi)容,三個(gè)核心內(nèi)容:
如果你懶得自己敲代碼的話,本文的兩個(gè)案例代碼我打包放在公眾號(hào)了,需要的朋友可以關(guān)注公眾號(hào)“程序猿DD”,回復(fù):pyscript 獲取。
第二個(gè)案例,數(shù)據(jù)定義 + 數(shù)據(jù)展示
先創(chuàng)建一個(gè)data.py文件,然后加入前面的代碼。功能很簡(jiǎn)單,就是隨機(jī)生成(x,y)的坐標(biāo)
|
再創(chuàng)建一個(gè)html文件,加入下面的代碼
|
這里就稍微復(fù)雜一些了,除了hello world中的幾個(gè)要點(diǎn)外,這里還有這幾個(gè)要關(guān)注的地方:
這個(gè)頁(yè)面的執(zhí)行效果是這樣的:
是不是很神奇呢?整個(gè)過(guò)程中都沒(méi)有大家熟悉的cs、js內(nèi)容,就完成了這樣一個(gè)圖的頁(yè)面實(shí)現(xiàn)。
最后,談?wù)勗谡麄€(gè)嘗試過(guò)程中,給我的幾個(gè)感受:
這個(gè)開(kāi)發(fā)框架目前還只是alpha版本,未來(lái)一定還會(huì)有更多特性與優(yōu)化出來(lái),總體上我覺(jué)得這個(gè)框架還是非常cool的,尤其對(duì)于剛學(xué)會(huì)Python,或者只會(huì)Python,但又想快速開(kāi)發(fā)Web應(yīng)用的小伙伴來(lái)說(shuō),可能將會(huì)是個(gè)不錯(cuò)的選擇,那你覺(jué)得這個(gè)框架如何?未來(lái)會(huì)不會(huì)火?留言區(qū)聊聊吧!
TML教程
超文本標(biāo)記語(yǔ)言(英語(yǔ):HyperText Markup Language,簡(jiǎn)稱:HTML)是一種用于創(chuàng)建網(wǎng)頁(yè)的標(biāo)準(zhǔn)標(biāo)記語(yǔ)言。
您可以使用 HTML 來(lái)建立自己的 WEB 站點(diǎn),HTML 運(yùn)行在瀏覽器上,由瀏覽器來(lái)解析。
在本教程中,您將學(xué)習(xí)如何使用 HTML 來(lái)創(chuàng)建站點(diǎn)。
HTML 很容易學(xué)習(xí)!相信您能很快學(xué)會(huì)它!
本教程包含了數(shù)百個(gè) HTML 實(shí)例。
使用本站的編輯器,您可以輕松實(shí)現(xiàn)在線修改 HTML,并查看實(shí)例運(yùn)行結(jié)果。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>孫叫獸的博客</title>
</head>
<body>
<h1>我的第一個(gè)標(biāo)題</h1>
<p>我的第一個(gè)段落。</p>
</body>
</html>
HTML 文檔的后綴名
.html
.htm
都可以。
實(shí)例:
<!doctype html>
<html>
<header>
<meta charset="utf-8">
<title>孫叫獸的博客</title>
</header>
<body>
<h1>這是我的標(biāo)題</h1>
<p>這是我的段落</p>
</body>
</html>
實(shí)例解析
什么是HTML?
標(biāo)簽
<標(biāo)簽>內(nèi)容</標(biāo)簽>
html元素
“HTML 標(biāo)簽” 和 “HTML 元素” 通常都是描述同樣的意思.
但是嚴(yán)格來(lái)講, 一個(gè) HTML 元素包含了開(kāi)始標(biāo)簽與結(jié)束標(biāo)簽,如下實(shí)例:
HTML 元素:
<p>這是一個(gè)段落</p>
web瀏覽器
Web瀏覽器(如谷歌瀏覽器,Internet Explorer,F(xiàn)irefox,Safari)是用于讀取HTML文件,并將其作為網(wǎng)頁(yè)顯示。
瀏覽器并不是直接顯示的HTML標(biāo)簽,但可以使用標(biāo)簽來(lái)決定如何展現(xiàn)HTML頁(yè)面的內(nèi)容給用戶
html網(wǎng)頁(yè)結(jié)構(gòu)
<html>
<head>
<title>頁(yè)面標(biāo)題</title>
</head>
<body>
<h1>這是一個(gè)標(biāo)題</h1>
<p>這是一個(gè)段落。</p>
<p>這是另外一個(gè)段落。</p>
</body>
</html>
html的版本:
<!DOCTYPE>聲明
<!DOCTYPE>聲明有助于瀏覽器中正確顯示網(wǎng)頁(yè)。
網(wǎng)絡(luò)上有很多不同的文件,如果能夠正確聲明HTML的版本,瀏覽器就能正確顯示網(wǎng)頁(yè)內(nèi)容。
doctype 聲明是不區(qū)分大小寫的,以下方式均可:
<!DOCTYPE html>
<!DOCTYPE HTML>
<!doctype html>
<!Doctype Html>
html5
<!DOCTYPE html>
html4
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4 Transitional//EN""
http://www.w3.org/TR/html4/loose.dtd">
xhtml1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
中文編碼
目前在大部分瀏覽器中,直接輸出中文會(huì)出現(xiàn)中文亂碼的情況,這時(shí)候我們就需要在頭部將字符聲明為 UTF-8。
Python提供的標(biāo)準(zhǔn)庫(kù)中有一個(gè)名為html的標(biāo)準(zhǔn)庫(kù),該標(biāo)準(zhǔn)庫(kù)提供的功能很簡(jiǎn)單,僅僅是把一些組成標(biāo)簽的尖括號(hào)或者是一些特殊字符轉(zhuǎn)換成實(shí)體字符。
這也是Python本身秉持的設(shè)計(jì)哲學(xué),就是一個(gè)函數(shù)、一個(gè)模塊或者一個(gè)標(biāo)準(zhǔn)庫(kù)只專注于一件事或者是某一方面的事。
我們先來(lái)大概了解該標(biāo)準(zhǔn)的組成
>>> import html
>>> dir(html)
['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_charref', '_html5', '_invalid_charrefs', '_invalid_codepoints', '_re', '_replace_charref', 'entities', 'escape', 'unescape']
我們不管那些以_開(kāi)頭的東東,把注意放在escape和unescape這兩個(gè)函數(shù)上。
假設(shè)我有一些HTML,我擔(dān)心其中會(huì)包含一些可能危險(xiǎn)的<script>標(biāo)記。這時(shí)有一種方法就是把標(biāo)簽的尖括號(hào)轉(zhuǎn)換成實(shí)體符號(hào),從以上兩個(gè)函數(shù)的命名可以大概了解相應(yīng)的功能。
沒(méi)錯(cuò)escape函數(shù)就是轉(zhuǎn)義的意思,就是把一些字符轉(zhuǎn)換為實(shí)體字符。比如“<”會(huì)轉(zhuǎn)換成“&+lt”、“>”會(huì)轉(zhuǎn)換成“&+gt”等等。(加號(hào)表示連接兩邊的符號(hào))
>>> import html
>>> help(html.escape)
Help on function escape in module html:
escape(s, quote=True)
Replace special characters "&", "<" and ">" to HTML-safe sequences.
If the optional flag quote is true (the default), the quotation mark
characters, both double quote (") and single quote (') characters are also
translated.
查看該函數(shù)的幫助可以了解到,它會(huì)把特定字符“&”,“<”,“>”等轉(zhuǎn)換成HTML安全的實(shí)體字符。該函數(shù)還有一個(gè)可選的標(biāo)記參數(shù),默認(rèn)為True,意思就是該函數(shù)默認(rèn)為把引用符號(hào)(“”、‘’)等一并轉(zhuǎn)換。
>>> import html
>>> demo = "<h1>Hello World!,'</h1>"
>>> html.escape(demo,quote = False)
"<h1>Hello World!,'mangfu'</h1>"
上面的例子中,我設(shè)置可選參數(shù)quote為False,則它并不會(huì)對(duì)引號(hào)(‘’)進(jìn)行轉(zhuǎn)換。
>>> import html
>>> demo = "<h1>Hello World!,'</h1>"
>>> html.escape(demo)
'<h1>Hello World!,'mangfu'</h1>'
上面的例子中,我使用該函數(shù)默認(rèn)的可選參數(shù),從結(jié)果中可以看出函數(shù)輸出已經(jīng)對(duì)引號(hào)(‘’)進(jìn)行轉(zhuǎn)換。
至于unescape函數(shù),看該函數(shù)的名字就知道它的作用跟escape函數(shù)恰恰相反。
可能大家對(duì)這些功能還不是很熟悉,但是這在Web開(kāi)發(fā)方面是很重要的,如果你以后學(xué)習(xí)Django來(lái)搭建自己的網(wǎng)站,會(huì)碰到這個(gè)功能的。
大家可以動(dòng)手試試unescape函數(shù)。。。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。