国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Simple-TODO: 一個簡易的 todo 程序 - web.py 中文教程

為什么要寫這個教程呢?非常多的新手問同樣的問題,很煩惱。我并不打算寫得大而全,我只想寫一個簡單的入門級的,解決新手的煩惱,其他知識你需要看官方文檔。我寫了一個簡單的 todo 程序,供新手學(xué)習(xí)和參考。

查看100%效果圖 > 來看源代碼的?直接拉到最后。

新人的煩惱

許多新手,特別是從 ASP/PHP/JSP 轉(zhuǎn)過來的同學(xué),經(jīng)常問下面這幾個問題:

  • 所有東西都放在一個 code.py 中呀?我有好多東西該如何部署我的代碼?
  • 是不是 /index 對應(yīng)訪問目錄下的 /index.py?
  • 我想要PHP中的那個 include,在模板該怎么實(shí)現(xiàn)?
  • 我輸出的內(nèi)容為什么是純文本的?我輸入的是 Html,原樣輸出了哦。

嗯,我很理解,我當(dāng)初也一樣遇到,原因是我們對 Python 的基礎(chǔ)工作原理不熟悉。Python 中有一個包機(jī)制,也就是說 code.py 中的東西都可以獨(dú)立出來,做為一個模塊或一個包存在,你需要什么就導(dǎo)入什么。例如 url 的配置,你可以獨(dú)立成一個 url.py 的文件,這樣你把 url 配置寫在這里,在 code.py 中導(dǎo)入即可。

不是 /index 對應(yīng)訪問 /index.py 的,在 web.py 中,是對應(yīng)后面的類。在 web.py 中,絕大部分是沒有寫死的,只有 GET 和 POST 是寫死的。

工作文件目錄看起來是如何的?

這是我的文件結(jié)構(gòu),不代表其他同學(xué)。

|-- code.py|-- config/
|   |-- __init__.py
|   |-- settings.py
|   `-- url.py
|-- controllers/
|   |-- __init__.py
|   `-- todo.py
|-- static/
|   |-- images/
|   `-- styles/
|       |-- index/
|       |   |-- images/
|       |   |   `-- website.png
|       |   `-- style.css
|       `-- reset.css
`-- templates/
    |-- error.html
    |-- foot.html
    |-- header.html
    |-- index.html
    `-- todo/
        `-- edit.html

# 使用 Ulipad 的 目錄樹打印 功能輸出。

他們?nèi)绾喂ぷ鳎?/h2>

code.py 主要用于啟動,絕大部分時(shí)候它是沒有用的。

/static 這個是靜態(tài)文件目錄,在內(nèi)置的開發(fā)服務(wù)器上不可以修改,如果你使用其他 web server 來配置的是可以改的。

/controllers 控制層的代碼,或者實(shí)際工作的代碼就在這里。

__init__.py 這是用來做什么的?看起來像初始化?嗯… 如果你希望某個目錄可以被引用,加上這個一樣空白文件就好了,表示當(dāng)前是一個模塊可以被引用。這是給新手做的說明。

/config 一些常用配置,我把 url 的配置獨(dú)立出來了,因?yàn)轫?xiàng)目做大了,url 很長。

我取消了 model 層,不要問我為什么,這是一個很糾結(jié)的話題,如果你需要,你可以獨(dú)立出一個 model 層。

其他的應(yīng)該不用解釋了。

簡單說一下 url 的配置

pre_fix = 'controllers.'

urls = (
    '/',                    pre_fix + 'todo.Index',
    '/todo/new',            pre_fix + 'todo.New',
    '/todo/(\d+)',          pre_fix + 'todo.View',
    '/todo/(\d+)/edit',     pre_fix + 'todo.Edit',
    '/todo/(\d+)/delete',   pre_fix + 'todo.Delete',

)

原理前面說過了,前面的訪問地址對應(yīng)后面的方法路徑。好多重復(fù)的字符串,所以我就把前面的弄成一個變量了。

大部分時(shí)候簡單的正則可以適用你的常規(guī)應(yīng)用了,數(shù)字用 (\d+),字符串用 (.*) 。

新手科普

#!/usr/bin/env python
# coding: utf-8

程序文件中請確保有這兩行開頭,你讀過簡明教程,對吧?你應(yīng)該懂的。第一行表示在 *nix 下面,使用 python 來解釋當(dāng)前程序;第二行表示當(dāng)前文件編碼為 utf-8。

程序老是報(bào)編碼錯誤

數(shù)據(jù)庫、程序文件等,請全部使用 utf-8 編碼。

經(jīng)常遇到程序編碼錯誤?web.py 內(nèi)部默認(rèn)使用 unicode,經(jīng)過 web.py 處理過的都是 unicode,所以你如果有中文,嘗試轉(zhuǎn)為 unicode,比如 a = u'中文啊'。大部分情況下可能解決。

開發(fā)服務(wù)器加載CSS文件非常慢

請統(tǒng)一換行符,即文件格式問題,全部使用 Unix 風(fēng)格的換行符。可能是你的 CSS 是 win 格式的編碼,請改為 Unix 編碼。

關(guān)于 static 靜態(tài)文件目錄

默認(rèn) webserver 開發(fā)模式下,不可改名,不可改路徑。你要是拖了自己的其他  webserver,那你自己另外配,當(dāng)然可以是任何名字。

類似 PHP 中的 include 引用在模板中如何實(shí)現(xiàn)?

把 render 做為全局變量放到模板中去,然后 $:render.header() 這樣。同樣本示例源碼中也使用了該方式,而沒有使用 layout 方式,該方式看官方文檔。

$news.content 純文本輸出了?。?/h2>

這樣 $:news.content

關(guān)于 web.input()

i = web.input() # get,post 提交的數(shù)據(jù)通收。

title = i.get('title', None) 這是什么意思?

從 i 中取 title,如果沒有取到則將 title 賦值 None。不然,你直接 title = i.title 如果前面的表單中沒有這一項(xiàng)會報(bào)錯。

關(guān)于 db.select 返回的是列表

a = db.select(tb, where='id=$id', vars=locals())  # id 為自增的那個主鍵

select 返回的是一個列表,因此要 a[0] 取到第 1 條。不過你有經(jīng)驗(yàn)的話,接下去仍然要判斷下:

if not a:
    return '沒有找到結(jié)果…'
return a[0]

QA 得差不多了,請閱讀源代碼,web.py 中文教程

讀代碼最實(shí)際,對吧?項(xiàng)目主頁:

Google Code: http://code.google.com/p/simple-todo/

Bitbucket.org https://bitbucket.org/qichangxing/simple-todo

數(shù)據(jù)文件在 /static/sql 下面,請自行導(dǎo)入,默認(rèn)使用了 mysql,需要可以修改成其他數(shù)據(jù)庫,在 /config/settings.py 中修改配置。

請放心,源碼是可以直接工作的,可以直接在目錄下 code.py 即可。其中用到了你經(jīng)常用的常識,期望有了這個之后你可以輕松地開始 web.py 學(xué)習(xí)和應(yīng)用之旅。那么馬上開始吧:

E:\web\test\todo>code.py
http://0.0.0.0:8080/

使用 http://127.0.0.1:8080 訪問。

如果想使用 80 端口訪問,則可以直接加 80 端口號:

E:\web\test\todo>code.py 80

更新:

  • 2011.6.26:功能升級,對于當(dāng)條 todo 增加完成功能,且把完成的放到最后。
  • 2013.4.3:使用 Nginx + uwsgi 運(yùn)行本程序
  • 2013.7.16:增加關(guān)于 static 文件目錄的說明,增加80端口的使用說明
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
用 Python 在安卓手機(jī)上構(gòu)建 Web 應(yīng)用程序
Django 靜態(tài)文件
Django中引入bootstrap的方法
用 Python 擼一個 Web 服務(wù)器-第5章:處理靜態(tài)資源
python測試開發(fā)django-97.設(shè)置DEBUG = False后靜態(tài)資源不顯示問題
Wagtail 教程 9:支持 Markdown
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服