Python是一種通用語言,並不完全是爲了網絡。存在一些可嵌入PHP的解決方案,但在大多數Python Web框架中,您分別編寫Python和HTML(模板)代碼。
例如在Django web framework你先寫一個view(視圖 - 你知道 - 從著名Model-View-Controller模式)功能:
def my_view(request, movie):
return render_to_template('my_view.html',
{'movie': settings.MEDIA_URL + 'flash.swf?' + movie})
而且隨着URL dispatcher註冊它(在Django,有一個特殊的文件,名爲urls.py
):
...
url(r'/flash/(?P<movie>.+)$', 'myapp.views.my_view'),
...
然後,my_view.html
template:
...
<object classid="clsid:XXXXXXXXX-YYYY-ZZZZ-AAAA-BBBBBBBBBB" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="100%" height="100%" id="main" align="middle">
<param name="allowScriptAccess" value="all" />
<param name="flashvars" value= />
<param name="movie" value="{{ movie }}" />
<param name="loop" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#eeeeee" />
<embed src="{{ movie }}" loop="false" quality="high" bgcolor="#eeeeee" width="100%" height="100%" name="main" align="middle" allowScriptAccess="all" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
...
雖然這可能看起來像很多工作,爲這麼小的任務,當你寫的東西比簡單的值替代腳本越大,框架自付回來。例如,您可能實際上使用少於100行的代碼編寫了一個簡單的博客應用程序。該框架將自動處理URL解析(Apache的mod_rewrite for PHP),複雜的模板,數據庫訪問,表單生成,處理和驗證,用戶身份驗證,調試等等。
有很多不同的框架,各有其自己的好和壞的方面。我建議花點時間閱讀介紹並選擇一個你喜歡的。就我個人而言,我喜歡Django,並且在web.py上取得了成功。我也聽說過關於Pylons和TurboGears的好消息。
如果你需要一些非常簡單的東西(比如你的例子),你幾乎不需要任何東西,你可以編寫小的WSGI應用程序,然後可以使用它,例如,可以使用Apache的mod_python或mod_wsgi。這將是這樣的:
def return_movie_html(environ, start_response):
request_uri = environ.get('REQUEST_URI')
movie_uri = request_uri[request_uri.rfind('/')+1:]
start_response('200 OK', [('Content-Type', 'text/html')])
return ['''
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
...
<object ...>
<param name="allowScriptAccess" value="all" />
<param name="flashvars" value= />
<param name="movie" value="%(movie)s" />
<param name="loop" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#eeeeee" />
<embed src="%(movie)s" loop="false" ... />
</object>
...
</html>
''' % {'movie': movie_uri}]
概括起來:無需額外的支持庫,Python的網絡編程是有點痛苦的,需要從URI解析輸出從頭格式化做一切。然而,有許多優秀的圖書館和框架,使工作不僅無痛,而且有時甚至令人愉快:)更多地瞭解它們,我相信你不會後悔的。
你正在使用什麼樣的python網絡庫/服務? – van 2009-06-25 06:31:21
我正在嘗試web2py – Morison 2009-06-25 06:36:18