天天看點

Python Web 實戰 - 搭建Django環境和初步使用模闆注入讀取get參數條件判斷表單

下載下傳安裝

去官網下載下傳和已安裝的python版本對應的Django版本。

解壓後進入目錄,執行 python setup.py install,執行安裝指令,所謂安裝其實是将需要的檔案拷貝到python對應的目錄。

但第一次卻報錯

Traceback (most recent call last):
  File "setup.py", line 5, in <module>
    from setuptools import find_packages, setup
ImportError: No module named setuptools
           

原來是windows環境下python預設沒有安裝 setuptools 這個子產品,是以提示找不到。

去 https://bootstrap.pypa.io/ez_setup.py 下載下傳ez_setup.py腳本并執行就自動安裝上了。

建立PyDev Django Project

在Eclipse,New-PyDev Django Project,建立成功後,Run該項目,Django有一個内置的伺服器,Run後該伺服器就啟動起來了。

在浏覽器執行 http://localhost:8000/ 可看到一個預設的輸出頁面。

建立一個py檔案,比如在目錄 mypy下

mypy/hello.py

from django.http.response import HttpResponse

def hi(request):
    return HttpResponse("Hello Python")
           

修改urls.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
#     url(r'^admin/', include(admin.site.urls)),
    url(r'index', "mypy.hello.hi"),
]
           

url(r'index', "mypy.hello.hi"), 表示在浏覽器輸入 http://localhost:8000/index,就可以通路 mypy包下檔案hello的hi方法,hi方法傳回的字元串會顯示在頁面上。

使用Django加載靜态網頁模闆

建立html頁面 /html/index.html

修改 settings.py下的 TEMPLATES 的 DIR,将index.html所在目錄指派給DIR。

使用内置函數render_to_response加載網頁

loadHtml.py

from django.shortcuts import render_to_response

def hiHtml(request):
    return render_to_response("index.html")
           

模闆注入

在loadHtml.py中定義一個key-value,做實參給了render_to_response

<span style="font-size:18px;">def hiHtml(request):
    user = {'name':'nqy',"age":29}
    return render_to_response("index.html",user)</span>
           

在index.html中通過引用key,使用value的值

<span style="font-size:18px;">my name is  {{name}}</span>
           

Django架構約定使用key的方式是{{ }}

(我發現對于初級入門型的課程,大可不必花錢學,因為網上這類免費資源多的是,真正需要付費的是那些進階課程)

讀取get參數

request.GET.get(" ")

<span style="font-size:18px;">id = request.GET.get("id")
name = request.GET.get('name')</span>
           

中文亂碼問題

在源碼開頭聲明編碼:#coding:utf-8

控制台亂碼:修改預設編碼集,重新開機web項目

條件判斷

注意條件後面的 ":" 

<span style="font-size:18px;">if 1==1:
    print 'ok'
    a = 3+5
    print a
else:
    print 'false' </span>
           
<span style="font-size:18px;">if 'keys' in user:
    print user['key']
else:
    print 'no key \'keys\' in user'</span>
           

None是特殊的常量,表示“不存在”

判斷某個值是否存在的兩種方式

<span style="font-size:18px;">user={'id':1,'value':'m'}
if 'id' in user.keys():
    print user['id']
else:
    print 'None'

print '----'

if user.get('id')==None:
    print 'None'
else:
    print user.get('id')</span>
           

表單

index.html

<span style="font-size:18px;"><form>
	UserName:<input type="text" name="username" value="mac"/>
	<br/>
	PassWord:<input type="password" name="pw"/>
	<br/>
	<input type="submit" value="Submit"/>
</form>

Your name is {{myusername}}
<br/>
Your password is {{mypw}}</span>
           

loadHtml.py

<span style="font-size:18px;">#coding:utf-8
from django.shortcuts import render_to_response

def hiHtml(request):
    user = {'myusername':"void","mypw":"void"}
    if 'username' in request.GET:
        un = request.GET.get("username")
        print un
        user['myusername'] = un
    if 'pw' in request.GET:
        pw = request.GET.get('pw')
        print pw
        user['mypw']=pw
    
    return render_to_response("index.html",user)</span>
           

next:第10講 限制使用者輸入純數字