您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Django視圖怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
一個視圖函數或者類,簡稱視圖(view),是一個簡單的Python 函數(類),它接受Web請求并且返回Web響應。響應可以是HTML頁面、一個重定向、一個404錯誤、一個xml、json數據、或圖片等
,視圖放置在項目或應用程序(app)目錄中的名為views.py的文件中;
我們來試著寫一個函數類型的View視圖
from django.shortcuts import render def index(request): if request.method == 'POST': pass else: return render(request=request, template_name='index.html', context=None, content_type=None, status=None, using=None) 其中的context是字典 content_type設置HTTP響應頭字段,用于告訴前端如何解析頁面 status是狀態碼,默認是200,可以自定義 using指定模板引擎的名稱,默認是使用Django模板引擎
語法為:render(request, template_name, context=None, content_type=None, status=None, using=None)
;
request
:用于生成此響應的請求對象; template_name:templates 中定義的文件,要注意路徑名;
context
:要傳入文件中用于渲染呈現的數據, 默認為空字典;
content_type
:生成的文檔要使用的MIME 類型,默認為DEFAULT_CONTENT_TYPE 設置的值;
status
:http的響應代碼,默認是200;
using
:用于加載模板使用的模板引擎的名稱;
看完了函數視圖,那我們簡單的來看一下類視圖,類視圖比函數視圖代碼量更少
class ProfileView(View): def get(self, request): return render(request, template_name='profile.html') def post(self, request): pass
我們用之前的users app舉例,在項目中增加一個profile.html文件(項目的templates中,html文件都在這個文件夾中),我們想要的效果能成功訪問/users/profile/
首先我們需要在users APP中的urls.py模塊中處理,需要導入ProfileView這個類:
from .views import ProfileView url(r'^profile/$', ProfileView.as_view(), name='profile'),
此時會報錯,因為我們還沒有創建這個類,那我們先在users APP的views.py中編寫ProfileView類
class ProfileView(View): def get(self, request): return render(request, 'profile.html', {'name': 'Angle'}) def post(self, request): username = request.POST.get('username', "") password = request.POST.get('password', "") return render(request, 'index.html', {'username': username, 'age': 18})
然后在之前創建的profile.html文件中隨意幾句HTML代碼
<div >users profile</div> # 我在style中加入了一個顏色樣式
我們在剛剛編寫的ProfileView類中打上斷點,然后我們運行項目,選擇Run—>Debug 項目名稱,然后運行,在控制臺中會出現這個地址: http://127.0.0.1:8000/,我們點進去,然后在后面加上/users/profile/的路徑,是不是就能看到我們編輯的HTML代碼`users profile`了;
第一步:在想要調試的代碼前打上斷點,也就是在代碼前面,行號的后面的位置,鼠標單擊,就可以設置斷點了;
第二步:先確保項目沒有在運行狀態,然后選擇Run->Debug->選擇要運行項目的名稱,此時就進入了斷點調試,斷點還有好多其他操作和功能,把鼠標移到相應的按鈕上看一下就能知道了;
配置users的url的時候可能會出現url(r'^users/', include('users.urls', namespace='users'))
報錯的問題,原因可能是Django的版本造成,1.0版本和2.0版本的源碼不同,include方法所帶的參數不同,2.0中include方法不能接受app_name參數,我們需要做一些調整,解決方法為:url(r'^users/', include(('users.urls', 'users'), namespace='users'))
,這樣就可以正常啟動了
關于“Django視圖怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。