django view


當請求一個頁面時,Django 創建一個包含有關請求數據的 HttpRequest 對象,並將它作為第一個參數傳給視圖函數,每個視圖函數處理完相應邏輯后返回一個 HttpResponse 對象,HttpRequest 和 HttpResponse 都被定義於 django.http 模塊中。

HttpRequest 對象包含當前用戶、使用的瀏覽器、當前請求 URL 的一些信息等。

屬性 類型 說明
HttpRequest.body   str  
HttpRequest.path str 除域名以外的請求路徑,以正斜杠開頭  
HttpRequest.path_info str 在某些WEB服務器配置的URL,在主機名之后的部分被分成腳本前綴和路徑信息兩部分,而 path_info 就是表示路徑信息部分的。(腳本前綴可以在WEB服務器中設置)
HttpRequest.method str HTTP請求的方式,值為 'GET' 或 'POST'
HttpRequest.encoding    
HttpRequest.GET django.http.QueryDict (dict 的子類) 鍵可重復,相當於c++的 multimap
HttpRequest.POST django.http.QueryDict 鍵可重復,相當於c++的 multimap
HttpRequest.REQUEST django.http.QueryDict 可以替代 HttpRequest.GET 和 HttpRequest.POST 的使用,不需要分清是GET還是POST即可獲取數據,推薦使用。
HttpRequest.COOKIES dict 鍵值都是 str
HttpRequest.FILES 類 dict 包含所有上傳文件。鍵是 <input type='file' name=""> 中name,值是一個 UploadedFile 對象。
HttpRequest.META dict 包含所有本次HTTP請求的 Header 信息,如用戶IP和瀏覽器信息等。
HttpRequest.user AUTH_USER_MODEL 必須安裝了 AuthenticationMiddleware 才可用
HttpRequest.session 類 dict 可讀可寫,表示當前會話,僅當 django 安裝了 session 支持時可用
HttpRequest.urlconf    
HttpRequest.resolver_match    

 

def search(request):
    errors = []
    if request.REQUEST.get('uid'):
        return render_to_response('result.html',{'query':request.REQUEST.get('uid')})
    elif 'uid' in request.REQUEST:
        errors.append('uid is null')
        return render_to_response('search.html',{'errors':errors})
    else:
        return render_to_response('search.html',{'errors':errors})

 

應每次都給成功的GET 或 POST 請求(如果會改動數據庫中數據的話)做重定向,這就是web開發的最佳實踐。

django 自帶一個 form 庫,稱為 django.forms,它可以進行表單顯示、表單驗證、當驗證失敗時重新顯示表單、將表單數據轉化成相關python類型:

#coding:utf-8
from django import forms

from django.conf import settings
settings.configure()

class MyForm(forms.Form):
    uid = forms.IntegerField(required=True)
    name = forms.CharField(required=True,widget=forms.Textarea,label='姓名',max_length=10)
    def clean_uid(self):
        uid = self.cleaned_data['uid']
        if uid<0:
            raise forms.ValidationError('uid 不能為負數!')
        return uid

f = MyForm({'uid':-3,'name':'tianya'})

print '輸出MyForm對象:%s' %f
print '綁定:%s' %f.is_bound
print '驗證:%s' %f.is_valid()
print '錯誤:%s' %f.errors
print 'uid字段的錯誤:%s' %f['uid'].errors
print '整理后的可用數據:%s' %f.cleaned_data

如果要復用 django 中定義好的 model ,可以使用 ModelForm,以避免重復模型描述。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM