文章目录
前言
- 上接博文: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_django -
cd test_models_django
-
python manage.py migrate
-
python manage.py startapp app01
:创建应用app01
-
主包中
setting.py
配置mysql数据源,根据提示安装mysqlclient
pythonDATABASES = { "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、增加操作
python
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、删除操作
python
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、修改操作
python
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 = username
user_obj.name = name
user_obj.password = password
user_obj.sex = sex
user_obj.age = age
user_obj.phone = phone
user_obj.email = email
user_obj.unit = unit
user_obj.save()
result = {
'code': 0,
'msg': 'success',
'data': ''
}
return HttpResponse(json.dumps(result, ensure_ascii=False), content_type='application/json')
d、查询操作
python
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
python
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'),
]