最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django學習筆記之View操作指南

 更新時間:2021年03月20日 12:24:14   作者:三省吾身  
這篇文章主要給大家介紹了關于Django學習筆記之View操作指南的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Django的View

一個視圖函數(shù)(類),簡稱視圖,是一個簡單的Python 函數(shù)(類),它接受Web請求并且返回Web響應。響應可以是一張網(wǎng)頁的HTML內容,一個重定向,一個404錯誤,一個XML文檔,或者一張圖片。 

無論視圖本身包含什么邏輯,都要返回響應。代碼寫在哪里也無所謂,只要它在你當前項目目錄下面。除此之外沒有更多的要求了——可以說“沒有什么神奇的地方”。為了將代碼放在某處,大家約定成俗將視圖放置在項目(project)或應用程序(app)目錄中的名為views.py的文件中。

導入:from django.views import View

一、查詢所有數(shù)據(jù)

查詢數(shù)據(jù)在自定義的視圖類中定義get方法

使用django.http模塊中的JsonResponse對非json格式的數(shù)據(jù)做返回處理

在JsonResponse必須添加safe=False參數(shù),否則會報錯:In order to allow non-dict objects to be serialized set the safe

from django.http import HttpResponse 
from django import http 
# Create your views here. 
class UserView(View): 
 ''' 用戶視圖 ''' 
 def get(self, request): 
  # 模型類實例化對象 
  users = UserProfile.objects.all() 
  user_list = [] 
  for user in users: 
   user_dict = { 
    'id': user.id, 
    'username': user.username, 
    'password': user.password, 
    'open_id': user.open_id, 
    'code': user.code 
   } 
  user_list.append(user_dict)
  return http.JsonResponse(user_list) 

二、創(chuàng)建數(shù)據(jù)

使用django中的json,把前端傳遞過來的json數(shù)據(jù)轉成字典

使用django.db.models模塊中的Q來查詢多個字段在數(shù)據(jù)庫中是否存在

from django.views import View 
from django.http import HttpResponse 
from django import http 
from django.db.models import Q 
import json 
class UserView(View): 
 ''' 用戶視圖 ''' 
 def post(self, request): 
  # 獲取數(shù)據(jù), json轉字典 
  dict_data = json.loads(request.body.decode()) 
  print(dict_data) 
  nick_name = dict_data.get('nickName') 
  code = dict_data.get('code') 
  open_id = "xljsafwjeilnvaiwogjirgnlg" 
  # 校驗數(shù)據(jù) 
  result = UserProfile.objects.filter(Q(code=code) | Q(open_id=open_id)) 
  if not result.exists(): 
   # 數(shù)據(jù)入庫 
   user = UserProfile.objects.create( username=nick_name, open_id=open_id, code=code ) 
   # 返回響應 
   user_dict = { 
    'id': user.id, 
    'username': user.username, 
    'password': user.password, 
    'open_id': user.open_id, 
    'code': user.code 
   } 
   return http.JsonResponse(user_dict) 
  return http.JsonResponse("用戶已存在", safe=False, status=202)

三、查詢某一條數(shù)據(jù)(單個)

前端需要傳遞pk/id值,通過pk/id查詢數(shù)據(jù),查詢一條數(shù)據(jù)必須用get,不能用filter,否則會報錯:AttributeError: 'QuerySet' object has no attribute 'id'

數(shù)據(jù)轉換

返回響應

class UserProfileDetail(View): 
 ''' 詳情視圖 ''' 
 def get(self, request): 
  userInfo = UserProfile.objects.get(id=id) 
  if not userInfo: 
   return HttpResponse("查詢的用Info戶不存在", status=404)     
  user_dict = { 
   'id': userInfo.id, 
   'username': userInfo.username, 
   'password': userInfo.password, 
   'open_id': userInfo.open_id, 
   'code': userInfo.code 
  } 
  return http.JsonResponse(user_dict, status=200) 

四、更新一條數(shù)據(jù)

前端需要傳遞pk/id值,通過pk/id查詢數(shù)據(jù),查詢一條數(shù)據(jù)必須用get,不能用filter,否則會報錯:AttributeError: 'QuerySet' object has no attribute 'id'

更新一條數(shù)據(jù)時必須使用filter來查詢數(shù)據(jù)集,再使用update(**data)來更新數(shù)據(jù),不能使用get,否則會報錯:AttributeError: '模型類' object has no attribute 'update'

get查詢獲取到的是數(shù)據(jù)對象,而filter查詢獲取到的是數(shù)據(jù)集

class UserProfileDetail(View): 
 ''' 詳情視圖 ''' 
 def put(self, request, id): 
  data_dict = json.loads(request.body.decode()) 
  userInfo = UserProfile.objects.get(id=id) 
  if not userInfo: 
   return HttpResponse("查詢的用Info戶不存在", status=404)     
  UserProfile.objects.filter(id=id).update(**data_dict) 
  userInfo = UserProfile.objects.get(id=id) 
  user_dict = { 
   'id': userInfo.id, 
   'username': userInfo.username, 
   'password': userInfo.password, 
   'open_id': userInfo.open_id, 
   'code': userInfo.code 
  } 
  return http.JsonResponse(user_dict, status=200)

五、刪除某一條數(shù)據(jù)

class UserProfileDetail(View): 
 ''' 詳情視圖 ''' 
 def delete(self, request, id): 
  userInfo = UserProfile.objects.filter(id=id) 
  if not userInfo: 
   return HttpResponse("刪除的數(shù)據(jù)不存在", status=404)      
  UserProfile.objects.filter(id=id).delete() 
  return HttpResponse("數(shù)據(jù)刪除成功", status=204)

上述的操作只能適用于數(shù)據(jù)表中字段很少的情況,如果字段較多,寫起來會很麻煩,不利于開發(fā)

總結

到此這篇關于Django學習筆記之View操作指南的文章就介紹到這了,更多相關Django View操作內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python 弧度與角度互轉實例

    python 弧度與角度互轉實例

    這篇文章主要介紹了python 弧度與角度互轉實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python中的多行注釋文檔編寫風格匯總

    Python中的多行注釋文檔編寫風格匯總

    在Python中利用多行注釋編寫小型的程序文檔說明非常方便,而約定俗成的格式也多種多樣,這里我們就進行一下最常見的Python中的多行注釋文檔編寫風格匯總:
    2016-06-06
  • python實現(xiàn)DEM數(shù)據(jù)的陰影生成的方法

    python實現(xiàn)DEM數(shù)據(jù)的陰影生成的方法

    這篇文章主要介紹了python實現(xiàn)DEM數(shù)據(jù)的陰影生成的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python爬蟲中IP池的使用小結

    Python爬蟲中IP池的使用小結

    在網(wǎng)絡爬蟲的世界中,IP池是一個關鍵的概念,它允許爬蟲程序在請求網(wǎng)頁時使用多個IP地址,從而降低被封禁的風險,提高爬蟲的穩(wěn)定性和效率,本文將深入探討Python爬蟲中IP池的使用,以及如何構建和維護一個可靠的IP池,感興趣的朋友一起看看吧
    2024-01-01
  • Python嵌套函數(shù)與nonlocal使用詳細介紹

    Python嵌套函數(shù)與nonlocal使用詳細介紹

    這篇文章主要介紹了Python嵌套函數(shù)與nonlocal使用,nonlocal關鍵字與global關鍵字有點相似,可以對比著理解。nonlocal關鍵字只能作用域局部變量,且始終找離當前最近的上層局部作用域中的變量
    2022-09-09
  • 使用Python、TensorFlow和Keras來進行垃圾分類的操作方法

    使用Python、TensorFlow和Keras來進行垃圾分類的操作方法

    這篇文章主要介紹了如何使用Python、TensorFlow和Keras來進行垃圾分類,這個模型在測試集上可以達到約80%的準確率,可以作為一個基礎模型進行后續(xù)的優(yōu)化,需要的朋友可以參考下
    2023-05-05
  • PyQt5打開文件對話框QFileDialog實例代碼

    PyQt5打開文件對話框QFileDialog實例代碼

    這篇文章主要介紹了PyQt5打開文件對話框QFileDialog實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • python展開嵌套列表的多種方法

    python展開嵌套列表的多種方法

    本文主要介紹了python展開嵌套列表的多種方法,包括for循環(huán)、列表推導式和sum函數(shù)三種方法,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • 深入解析Python中BeautifulSoup4的基礎知識與實戰(zhàn)應用

    深入解析Python中BeautifulSoup4的基礎知識與實戰(zhàn)應用

    BeautifulSoup4正是一款功能強大的解析器,能夠輕松解析HTML和XML文檔,本文將介紹BeautifulSoup4的基礎知識,并通過實際代碼示例進行演示,感興趣的可以了解下
    2024-02-02
  • 深入剖析Python的爬蟲框架Scrapy的結構與運作流程

    深入剖析Python的爬蟲框架Scrapy的結構與運作流程

    這篇文章主要介紹了Python的爬蟲框架Scrapy的結構與運作流程,并以一個實際的項目來講解Scrapy的原理機制,十分推薦!需要的朋友可以參考下
    2016-01-01

最新評論

荥经县| 乐业县| 固安县| 浦东新区| 开化县| 龙川县| 岑溪市| 高平市| 南漳县| 墨竹工卡县| 广宁县| 南宁市| 丹凤县| 辰溪县| 武义县| 翁牛特旗| 宝丰县| 扶余县| 沙田区| 本溪| 海淀区| 焉耆| 客服| 英山县| 济南市| 米泉市| 电白县| 疏勒县| 安阳市| 松潘县| 涞水县| 织金县| 河南省| 建始县| 大邑县| 玉溪市| 静安区| 东明县| 周口市| 玉林市| 开封县|