文章目錄
- 前言
- 一、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開發需求。已有開發團隊,如果有空閑時間想接項目者,可以加我呦。
- 不按上訴規則添加好友者,不予通過。
- 加V:
- 項目環境
- 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框架的特點:
- 建立模型類和表之間的對應關系,允許我們通過面向對象的方式來操作數據庫。
- 根據設計的模型類生成數據庫中的表格。
- 通過方便的配置就可以進行數據庫的切換。
二、項目快速搭建
對前面的搭建流程梳理簡化。
django-admin startproject test_models_django
:創建項目test_models_djangocd test_models_django
python manage.py migrate
python manage.py startapp app01
:創建應用app01
- 主包中
setting.py
配置mysql數據源,根據提示安裝mysqlclient
DATABASES = {"default": {"ENGINE": "django.db.backends.mysql","NAME": "數據庫名","USER": "用戶","PASSWORD": "密碼","HOST": "ip","PORT": "3306"} }
python manage.py runserver
:運行項目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'),
]