django中的視圖層

来源:https://www.cnblogs.com/suncolor/archive/2022/09/07/16663109.html
-Advertisement-
Play Games

1.什麼是視圖層 簡單來說,就是用來接收路由層傳來的請求,從而做出相應的響應返回給瀏覽器 2.視圖層的格式與參數說明 2.1基本格式 from django.http import HttpResponse def page_2003(request): html = '<h1>第一個網頁</h1> ...


1.什麼是視圖層

簡單來說,就是用來接收路由層傳來的請求,從而做出相應的響應返回給瀏覽器

2.視圖層的格式與參數說明

2.1基本格式

from django.http import HttpResponse
def page_2003(request):
    html = '<h1>第一個網頁</h1>'
    return HttpResponse(html)
# 註意需要在主路由文件中引入新創建的視圖函數

2.2帶有轉換器參數的視圖函數

def test(request, num):
    html = '這是我的第%s個網頁' % num
return HttpResponse(html)
# 添加轉換器的視圖函數,request後面的參數num為path轉換器中的自定義名

2.3帶有正則表達式參數的視圖函數

同帶有轉換器參數的視圖函數

2.4重定向的視圖函數

from django.http import HttpResponse,HttpResponseRedirect
def test_request(request):--註意path函數里也要綁定test_request這個路徑
return HttpResponseRedirect('page/2003/')--重定向到127.0.0.1:8000/page/2003這個頁面去

2.5判斷請求方法的視圖函數

def test_get_post(request):
if request.method == 'GET':
    pass   
elif request.method == 'POST':
    pass

2.6載入模板層的視圖函數

使用render()直接載入並相應模板語法:
​from django.shortcuts import render
​def test_html(request):   
​ return render(request, '模板文件名', 字典數據)
註意視圖層的所有變數可以用local()方法全部自動整合成字典傳到render的最後一個參數里

2.7返回JsonResponse對象的視圖函數

json格式的數據的作用:

前後端數據交互需要用到json作為過渡,實現跨語言傳輸數據。

格式:

from django.http import JsonResponse
def ab_json(request):
    user_dict={'username':'json,我好喜歡','password':'1243'}
return JsonResponse(user_dict,json_dumps_params={'ensure_ascii':False})
# 字典傳入時需要設置json_dumps_params格式化字元串,不然字典里的中文會報錯
    list = [111,22,33,44]
return JsonResponse(list,safe=False)
# 列表傳入序列化時需要設置safe為false ,不然會報錯

2.8視圖層的FBV和CBV格式

視圖函數既可以是函數(FBV)也可以是類(CBV)

1.FBV
def index(request):
return HttpResponse('index')

2.CBV
# CBV路由
    pathr'^login/',views.MyLogin.as_view())
# CBV視圖函數
from django.views import View
class MyLogin(View):
def get(self,request):
return render(request,'form.html')
def post(self,request):
return HttpResponse('post方法')
"""
FBV和CBV各有千秋
CBV特點
  能夠直接根據請求方式的不同直接匹配到對應的方法執行

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JavaGUI-坦克大戰03-2 7.線程的應用02 7.3.坦克大戰4.0版 坦克大戰4.0版 增加功能: 功能1.讓敵人的坦克也能夠發射子彈(可以有多個子彈) 功能2.當我方坦克集中敵人坦克時,敵人的坦克就消失,如果能做出爆炸的效果更好 功能3.讓敵人的坦克也可以自由隨機地上下左右移動 功能4. ...
  • 1.什麼是模板層 模板層可以根據視圖中傳遞的字典數據動態生產相應的HTML頁面 2.模板層的配置 1.在項目下創建一個與同名文件夾平行的templates文件夾 2.在settings.py中的TEMPLATES配置項中 BACKEND:指定模板的引擎 DIRS:模板的搜索目錄(可以是一個或者多個) ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 最近在研究一個基於TP6的框架CRMEB,這裡分享下我的開發心得 首先要獲取原始項目文件 這裡是git地址 https://gitee.com/ZhongBangKeJi/CRMEB.git 項目環境的要求為Apache、MySQL、PH ...
  • 命令版 示例: 將main分支轉到master分支上 切到需要使用的分支 git checkout master 強制忽略歷史融合 git merge main --allow-unrelated-histories 3.提交融合衝突文件即可 ...
  • Django_ajax 1 簡介 AJAX(Asynchronous Javascript And XML)翻譯成中文就是“非同步Javascript和XML”。即使用Javascript語言與伺服器進行非同步交互,傳輸的數據為XML(當然,傳輸的數據不只是XML)。 同步交互:客戶端發出一個請求後,需 ...
  • 作用域 作用域分為: 全局作用域 局部作用域 在函數內部的作用域叫做局部作用域,局部作用域中的變數叫做局部變數 非函數內部的作用域叫做全局作用域,全局作用域中的變數叫做全局變數 局部作用域可以使用全局變數,全局變數不能試用局部變數 變數的使用規則: 從內向外,找到後返回 函數作用域中命名全局變數gl ...
  • 我們上面使用swarm部署服務,單個服務還好,如果很多個服務怎麼來解決呢,這裡就用到了Docker Stack管理服務。 ​ 在上面我們學會瞭如何配置一個swarm集群,並且知道如何在swarm集群上部署應用,現在,我們開始瞭解Docker層級關係中的最高一個層級——stack。一個stack就是一 ...
  • “如何解決TCC中的懸掛問題”! 一個工作了4年的Java程式員,去京東面試,被問到這個問題。 大家好,我是Mic,一個工作了14年的Java程式員 這個問題面試官想考察什麼方面的知識?我們又該怎麼回答呢? 問題解析 TCC是分散式事務問題裡面的解決方案,一般在應聘互聯網公司的時候問的比較多。 實際 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:這個WPF項目通過XAML繪製汽車動態速度表盤,實現了0-300的速度刻度,包括數字、指針,並通過定時器模擬速度變化,展示了動態效果。詳細實現包括界面設計、刻度繪製、指針角度計算等,通過C#代碼與XAML文件結合完成。 新建 WPF 項目: 在 Visual Studio 中創建一個新的 WP ...
  • 概述:在WPF中使用`WpfAnimatedGif`庫展示GIF動畫,首先確保全裝了該庫。通過XAML設置Image控制項,指定GIF路徑,然後在代碼中使用庫提供的方法實現動畫控制。這簡化了在WPF應用中處理GIF圖的過程,提供了方便的介面來管理動畫播放和暫停。 當使用 WpfAnimatedGif  ...
  • 您是否曾經訪問過一個網站,它需要很長時間載入,最終你敲擊 F5 重新載入頁面。 即使用戶刷新了瀏覽器取消了原始請求,而對於伺服器來說,API也不會知道它正在計算的值將在結束時被丟棄,刷新五次,伺服器將觸發 5 個請求。 為瞭解決這個問題,ASP.NET Core 為 Web 伺服器提供了一種機制,就 ...
  • 本章將和大家分享如何通過 Elasticsearch 實現自動補全查詢功能。 一、自動補全-安裝拼音分詞器 1、自動補全需求說明 當用戶在搜索框輸入字元時,我們應該提示出與該字元有關的搜索項,如圖: 2、使用拼音分詞 要實現根據字母做補全,就必須對文檔按照拼音分詞。在 GitHub 上恰好有 Ela ...
  • using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace OOP { pub ...
  • 概述:以上內容詳細介紹了在C#中如何從另一個線程更新GUI,包括基礎功能和高級功能。對於WinForms,使用`Control.Invoke`;對於WPF,使用`Dispatcher.Invoke`。高級功能使用`SynchronizationContext`實現線程間通信,確保清晰、可讀性高的代碼 ...
  • Nuget包 Microsoft.Extensions.Telemetry.Abstractions 包含的新的日誌記錄source generator,它支持使用[LogProperties]將整個對象作為State與日誌一起記錄。 我將展示一種方法來控制如何使用[LogProperties]對象 ...
  • 支持.Net/.Net Core/.Net Framework,可以部署在Docker, Windows, Linux, Mac。 常見的ORM技術(比如:Entity Framework,Dapper,SqlSugar,NHibernate,等…),它們不是在做Sql語句的程式化變種,就是在做Sq ...
  • 一、引言 在現代應用程式開發中,尤其是在涉及I/O操作(如網路請求、文件讀寫等)時,非同步編程成為了提高性能和用戶體驗的關鍵技術。C#作為.NET框架下的主流開發語言,提供了強大的非同步編程支持,通過async/await關鍵字,可以讓開發者以同步的方式編寫非同步代碼,極大地簡化了非同步編程的複雜性。本文將 ...
  • 一、引言 在.NET開發中,操作Office文檔(特別是Excel和Word)是一項常見的需求。然而,在伺服器端或無Microsoft Office環境的場景下,直接使用Office Interop可能會面臨挑戰。為瞭解決這個問題,開源庫NPOI應運而生,它提供了無需安裝Office即可創建、讀取和 ...