---恢復內容開始---html
from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: # url(r'^$', 'mysite.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^$', 'mysite.views.first_page'), )
urls是網站URL映射,說明什麼URL對應什麼模塊。 APP就是一個小型的WEB SERVER,python
render是將代碼與模板對應起來,能夠生成一套網頁或者是響應。django
一個用戶請求過來先到了project的urls.py上,而後檢查URLS,找到對應app的urls.py,運行urls對應的模塊編程
用render_to_response()簡化views層windows
http://www.nowamagic.net/academy/detail/1318431app
from django.http import HttpResponse def hello(request): return HttpResponse("Hello NowaMagic")
每一個視圖函數至少要有一個參數,一般被叫做request。 這是一個觸發這個視圖、包含當前Web請求信息的對象,是類django.http.HttpRequest 的一個實例。在這個示例中,咱們雖然不用 request 作任何事情,然而它仍必須是這個視圖的第一個參數。函數
注意視圖函數的名稱並不重要;並不必定非得以某種特定的方式命名才能讓 Django 識別它。 在這裏咱們把它命名爲:hello,是由於這個名稱清晰的顯示了視圖的用意。一樣地,你能夠用諸 如:hello_wonderful_beautiful_world,這樣難看的短句來給它命名。 在下一小節(Your First URLconf),將告訴你Django是如何找到這個函數的。性能
這個函數只有簡單的一行代碼: 它僅僅返回一個HttpResponse對象,這個對象包含了文本「Hello world」。網站
這裏主要講的是: 一個視圖就是Python的一個函數。這個函數第一個參數的類型是HttpRequest;它返回一個HttpResponse實例。爲了使一個 Python的函數成爲一個Django可識別的視圖,它必須知足這兩個條件。 (也有例外,可是咱們稍後纔會接觸到。)url
from django.http import HttpResponse import datetime def hello(request): return HttpResponse("Hello NowaMagic") def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html)
可是若是要import一個不一樣目錄的文件(例如b.py)該怎麼作呢?
首先須要使用sys.path.append方法將b.py所在目錄加入到搜素目錄中。而後進行import便可,例如:
import sys sys.path.append('c:\xxxx\b.py') # 這個例子針對 windows 用戶來講的
面的代碼有時會找不到模塊或者包(ImportError: No module named xxxxxx),這是由於:
sys模塊是使用c語言編寫的,所以字符串支持 '\n', '\r', '\t'等來表示特殊字符。因此上面代碼最好寫成:
sys.path.append('c:\\xxx\\b.py') # 或者 sys.path.append('c:/xxxx/b.py')
這樣能夠避免由於錯誤的組成轉義字符,而形成無效的搜索目錄(sys.path)設置。
在前面瞭解過 Python 的序列,特別是 list 和 tuple 以後,咱們就能夠解釋一些 Python 裏特有的一些編程技巧,額……好比多重賦值。
>>> t = 1,2,3 >>> t (1, 2, 3) >>> a,b,c = t >>> a 1 >>> b 2 >>> c 3
Python xrange與range的區別
xrange 用法與 range 徹底相同,所不一樣的是生成的不是一個list對象,而是一個生成器。
>>> xrange(5) xrange(5) >>> list(xrange(5)) [0, 1, 2, 3, 4] >>> xrange(1,5) xrange(1, 5) >>> list(xrange(1,5)) [1, 2, 3, 4] >>> xrange(0,6,2) xrange(0, 6, 2) >>> list(xrange(0,6,2)) [0, 2, 4]
由上面的示例能夠知道:要生成很大的數字序列的時候,用xrange會比range性能優不少,由於不須要一上來就開闢一塊很大的內存空間。
for i in range(0, 100): print i for i in xrange(0, 100): print i
xrange 和 range 這兩個基本上都是在循環的時候用。結果同樣