Django學習三:views業務層中通過models對實體對象進行的增、刪、改、查操作。

文章目錄

  • 前言
  • 一、Django ORM介紹
  • 二、項目快速搭建
  • 三、操作
    • 1、view.py
      • a、增加操作
      • b、刪除操作
      • c、修改操作
      • d、查詢操作
    • 2、urls.py

前言

  • 上接博文:Django學習二:配置mysql,創建model實例,自動創建數據庫表,對mysql數據庫表已經創建好的進行直接操作和實驗。。
  • 緊跟上一篇博文,本文主要學習view層的增、刪、改、查業務流程
  • 有興趣可以添加我,一起探討技術。
    • 加V:Fengfl1222,名稱:insist科技。
    • 要資料,申請備注為:CSDN+地方,如CSDN山東。
    • 想接項目一起努力進步,申請備注為:CSDN+地方+項目,如CSDN+山東+項目,添加成功之后,可以發一份簡歷。
    • 本人介紹:211高校(北京交通大學)計算機研究生,本科雙非計算機畢業后,校招進入軍工,工作2個月離職后進入阿里,工作兩年后離職考研,現已畢業,入職濟南某大廠。主要技術棧:java、python、vue、react等web開發需求。已有開發團隊,如果有空閑時間想接項目者,可以加我呦。
    • 不按上訴規則添加好友者,不予通過。
  • 項目環境
    • python: 3.11.5
    • django:4.1
      在這里插入圖片描述

一、Django ORM介紹

所有面向對象的語言都可以通過原生sql操作數據庫。但是Django的ORM框架是特殊的,可以不通過sql,通過面向對象的方式進而操作數據庫表,進行增、刪、改、查。這種方式好上手,避免了不會sql的同學需要重新學習sql。擴展一下,因為我主要搞java的,所以java的ORM框架有mybatis、JPA等,相比java的ORM框架,Django這種面向對象操作數據庫的ORM框架確實簡單太多了。

接下來請跟隨我的腳步,一起學習Django的ORM框架。

  • O(objects):類和對象。R(Relation):關系,關系數據庫中的表格。M(Mapping):映射。

  • Django ORM框架的特點:

    1. 建立模型類和表之間的對應關系,允許我們通過面向對象的方式來操作數據庫。
    2. 根據設計的模型類生成數據庫中的表格。
    3. 通過方便的配置就可以進行數據庫的切換。

二、項目快速搭建

對前面的搭建流程梳理簡化。

  1. django-admin startproject test_models_django:創建項目test_models_django
  2. cd test_models_django
  3. python manage.py migrate
  4. python manage.py startapp app01:創建應用app01
  5. 主包中setting.py配置mysql數據源,根據提示安裝mysqlclient
    DATABASES = {"default": {"ENGINE": "django.db.backends.mysql","NAME": "數據庫名","USER": "用戶","PASSWORD": "密碼","HOST": "ip","PORT": "3306"}
    }
    
  6. python manage.py runserver:運行項目
  7. http://127.0.0.1:8000/:瀏覽器測試。出現如下節目,則成功運行
    在這里插入圖片描述

三、操作

view.py中填寫如下操作
request是模仿從前端傳過來的請求,這里可以進行自由替換。

1、view.py

a、增加操作

def addUser(request):username = request.POST.get('username')name = request.POST.get('name')password = request.POST.get('password')sex = request.POST.get('sex')age = request.POST.get('age')phone = request.POST.get('phone')email = request.POST.get('email')unit = request.POST.get('unit')models.UserData.objects.create(username=username, name=name, password=password, sex=sex, age=age, phone=phone,email=email, unit=unit)result = {'code': 0,'msg': 'success','data': ''}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

b、刪除操作

def deleteUserById(request):u_id = request.GET.get('u_id')models.UserData.objects.filter(u_id=u_id).delete()result = {'code': 0,'msg': 'success','data': ''}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

c、修改操作

def queryUserById(request):u_id = request.GET.get('u_id')UserData = models.UserData.objects.get(u_id)data_list = {'dataList': UserData}result = {'code': 0,'msg': 'success','data': data_list}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')def updateUser(request):u_id = request.POST.get('u_id')username = request.POST.get('username')name = request.POST.get('name')password = request.POST.get('password')sex = request.POST.get('sex')age = request.POST.get('age')phone = request.POST.get('phone')email = request.POST.get('email')unit = request.POST.get('unit')user_obj = models.UserData.objects.get(u_id)user_obj.username = usernameuser_obj.name = nameuser_obj.password = passworduser_obj.sex = sexuser_obj.age = ageuser_obj.phone = phoneuser_obj.email = emailuser_obj.unit = unituser_obj.save()result = {'code': 0,'msg': 'success','data': ''}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

d、查詢操作

def queryUsers(request):all_user_list = models.UserData.objects.filter(status__ne=9)all_user_total = models.UserData.objects.filter(status__ne=9).count()#  all_user_total = len(all_user_list)for item in all_user_list:print(item.name)data_list = {'dataList': all_user_list, 'totalRows': all_user_total}result = {'code': 0,'msg': 'success','data': data_list}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')def queryUserById(request):u_id = request.GET.get('u_id')UserData = models.UserData.objects.get(u_id)data_list = {'dataList': UserData}result = {'code': 0,'msg': 'success','data': data_list}return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')

2、urls.py

urlpatterns = [path('hello/', viewsUser.hello_world),# 用戶模塊path('queryUsers/', viewsUser.queryUsers, name='queryUsers'),path('queryUserById/', viewsUser.queryUserById, name='queryUserById'),path('addUser/', viewsUser.addUser, name='addUser'),path('updateUser/', viewsUser.updateUser, name='updateUser'),path('deleteUserById/', viewsUser.deleteUserById, name='deleteUserById'),
]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/23624.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/23624.shtml
英文地址,請注明出處:http://en.pswp.cn/web/23624.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

一周發文9篇!MIMIC-IV數據庫周報(5.22~5.28)

重癥醫學數據庫(MIMIC)是由計算生理學實驗室開發的公開數據集,其中包括與數千個重癥監護病房入院相關的去識別化健康數據,致力于推動臨床信息學、流行病學和機器學習的研究。 MIMIC數據庫于2003年在美國國立衛生研究院的資助下&am…

2024上海初中生古詩文大會倒計時4個半月:單選題真題示例和獨家解析

現在距離2024年初中生古詩文大會還有4個半月時間,我們來看10道選擇題真題和詳細解析,了解古詩文大會的考察方式和知識點,從而更好地備考。 以下題目截取自我獨家制作的在線真題集,都是來自于歷屆真題,去重、合并后&am…

數據倉庫緩慢變化維介紹

緩慢變化維(Slowly Changing Dimensions, SCD)是數據倉庫設計中的一個重要概念,用于處理維度表中隨時間緩慢變化的屬性。維度表中的數據通常描述業務實體(如客戶、產品、員工等),而這些實體的某些屬性&…

面試成功的不二法門:詳解Vue3答題章法

前言 面試題在網絡上有如海洋之深,對于同一知識點,每個人的理解也各有千秋。我們在面試中常常會遇到一個瞬息間腦海里一片空白的情況,其實這并不是因為我們不懂,而是因為我們在回答的時候缺乏一個清晰的思路。那么問題來了&#x…

《魔法與科技的融合:SpringBoot運維的現代傳說》

揭開了SpringBoot應用部署的神秘面紗。從云平臺的選型到Docker的容器化魔法,再到Kubernetes的集群力量,每一步都充滿了奇幻色彩。文章以輕松幽默的筆觸,帶領讀者穿梭于現代應用部署的各個角落,探索自動化部署的奧秘,學…

關于圖像過曝問題的排查思路

1、問題背景 讀者提問,圖像在室外遇到過曝的問題,有什么排查思路和改善方法。 2、問題分析 1)先檢查一下sensor驅動,對照 sensor datasheet 確認下最小曝光行設置的是否正確, 因為室外高亮場景一般曝光行走的都比較…

【深度學習】PuLID: Pure and Lightning ID Customization via Contrastive Alignment

論文:https://arxiv.org/abs/2404.16022 代碼:https://github.com/ToTheBeginning/PuLID 文章目錄 AbstractIntroductionRelated WorkMethods Abstract 我們提出了一種新穎的、無需調整的文本生成圖像ID定制方法——Pure and Lightning ID customizatio…

微信好友朋友圈的三天、半年可見怎么破?方法拿走不謝

『Code掘金』問大家,有沒有這種經歷,當你想去翻某人的朋友圈時,對方設置成了3天可見,之前的內容沒法看到了。 不過沒關系!今天『Code掘金』給大家分享一款導出朋友圈的工具,讓大家留住痕跡。 WechatMomen…

PostgreSQL中有沒有類似Oracle的dba_objects系統視圖

PostgreSQL中有沒有類似Oracle的dba_objects系統視圖 在PostgreSQL中,沒有一個完全集成了所有對象信息的視圖(類似于Oracle中的DBA_OBJECTS)。但是,PostgreSQL提供了一些系統目錄表和視圖,可以用來獲取數據庫對象的信…

初探沁恒CH32V307VCT6評估板 1-1外部中斷EXTI

旋轉編碼器計次 1,創建 .C .H 文件 Count_Sonser.c Count_Sonser.h 2,包含頭文件 #include "ch32v30x.h" //#include "debug.h" #include "Count_Sonser.h" 注意:如果不包含第一第二個頭文件uint、int這…

如何掌握 Java 正則表達式 的基本語法及在 Java 中的應用

正則表達式是一種用于匹配字符串的模式,在許多編程語言中廣泛使用。Java 正則表達式提供了強大的文本處理能力,能夠對字符串進行查找、替換、分割等操作。 一、正則表達式的基本語法 正則表達式由普通字符和特殊字符組成。普通字符包括字母、數字和標點…

通過 echo 命令向 /sys/class/gpio/export 寫入一個GPIO編號,但遇到 “Device or resource busy

通過 echo 命令向 /sys/class/gpio/export 寫入一個GPIO編號,但遇到 "Device or resource busy" 錯誤時,這通常意味著該GPIO引腳已經被其他驅動或用戶空間程序導出并使用了。 要解決這個問題,可以嘗試以下步驟: 檢查GP…

SpEL表達式使用方法

1 SpEL簡介 SpEL(Spring Expression Language)是一種用于在Spring框架中進行數據綁定和執行業務邏輯的表達式語言。Spring EL提供了一種簡潔、靈活和強大的方式來訪問對象的屬性、調用方法、執行運算和邏輯判斷等操作。 官方文檔:https://d…

C# 多線程:并發編程的利器

在現今日益復雜的軟件開發環境中,多線程編程已經成為提升應用程序性能和響應速度的關鍵技術。C# 作為一種現代、功能強大的編程語言,提供了豐富的多線程支持,使開發者能夠充分利用多核處理器和并行計算的優勢。本文將深入探討C#中的多線程編程…

網絡協議三

數據中心 一、DNS 現在網站的數目非常多,常用的網站就有二三十個,如果全部用 IP 地址進行訪問,恐怕很難記住 根 DNS 服務器 :返回頂級域 DNS 服務器的 IP 地址 頂級域 DNS 服務器:返回權威 DNS 服務器的 IP 地址 …

匯凱金業:貴金屬交易規則有哪些

貴金屬投資目前非常火熱,許多投資者從中獲得了可觀的收益。新手投資者在進入貴金屬市場及其交易之前,務必要了解清楚貴金屬的交易規則。了解規則和差異能幫助新手更好地進行貴金屬投資交易。下面我們以現貨類貴金屬為例,詳細說明貴金屬的交易…

一周學會Django5 Python Web開發 - Django5內置Auth認證系統-用戶修改密碼實現

鋒哥原創的Python Web開發 Django5視頻教程: 2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~共計59條視頻,包括:2024版 Django5 Python we…

關于在 Ubuntu 下安裝配置和調優 FTP 服務器

今天我在阿貝云的免費服務器上部署測試FTP服務器,這個阿貝云真是個不錯的免費云服務器啊,配置雖然不高,但完全足夠搭建一個FTP服務器使用了。1核CPU、1G內存、10G硬盤、5M帶寬,對我這個喜歡折騰的家伙來說可太好用了。 首先,讓我簡單介紹下今天要用到的FTP服務器軟…

Mybatis雜記

group by查詢返回map類型 1,2 List<Map<String, Object>> getCount();xml: <select id"getCount" resultType"java.util.HashMap">SELECT company_id, ifnull(sum(count_a count_b),0) ctFROM test.com_countWHERE is_del 0 GROUP BY…

天氣數據集2-應用RNN做天氣預測

二、用循環神經網絡做天氣(溫度)預測 本項目是基于Pytorch的 RNN&GRU模型&#xff0c;用于預測未來溫度 數據集: https://mp.weixin.qq.com/s/08BmF4RnnwQ-jX5s_ukDUA 項目代碼: https://github.com/disanda/b_code/tree/master/Weather_Prediction RNN 模型本質是用于預…