加载中...
python Django增删改查 快速体验
发表于:2022-04-18 | 分类: python
字数统计: 772 | 阅读时长: 4分钟 | 阅读量:

在这里插入图片描述

  1. 先创建个app子级

    python .\manage.py startapp app01

    然后创建数据模型

    app01下的
    modules.py文件

1
2
3
4
5
6
7
8
from django.db import models

# Create your models here.
class UserInfo(models.Model):
name=models.CharField(max_length=32)
password=models.CharField(max_length=12)
age=models.IntegerField()
tel=models.IntegerField(max_length=11)

配置数据库

1
2
3
4
5
6
7
8
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '数据库名',
'USER': '数据库用户名',
'PASSWORD': '密码',
'HOST': '127.0.0.1',
'PORT': '3306',
}
  1. 迁移数据库
1
python manage.py makemigrations 和 python manage.py migrate
  1. 写路由url
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from django.contrib import admin
from django.urls import path,include
from app01 import views
urlpatterns = [
# path('admin/', admin.site.urls),
# path('index/',views.index),
# path('user/list/', views.user_list),
# path('login/', views.ApiLogin.as_view()),
# path('del/', views.ApiDel.as_view()),
path('add/', views.addUser.as_view()),
path('user/', views.UserList.as_view()),
path('updateuser/', views.upDateUser.as_view()),
path('del/', views.deluser.as_view()),
]

4.view页面编写增删改查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from django.shortcuts import render,HttpResponse
from rest_framework.views import APIView
# Create your views here.
from django import views
from app01.models import UserInfo
from rest_framework.response import Response
from app01.ser import APIViewUserInfo




class addUser(APIView):
def post(self,request):
obj=APIViewUserInfo(data=request.data)
if obj.is_valid():
obj.save()
return Response({"data":obj.data, "status" : 201,"message":"添加用户成功"})


return Response(data=obj.errors,status=400)





class UserList(APIView):
def get(self,request):
obj=UserInfo.objects.all()
ser=APIViewUserInfo(instance=obj,many=True)
return Response(ser.data)

class upDateUser(APIView):
def post(self,request):
print(request.data.get('id'))
i=request.data.get('id')
try:
user=UserInfo.objects.get(id=i)
except Exception as e:
return Response(data='不存在', status=201)
# 创建序列化对象,并将要反序列化的数据传递给data构造参数,进而进行验证
user.password=request.data.get('password')
if request.data.get('name')!='':
print(request.data.get('name')=='')
user.name=request.data.get('name')

user.save()
return Response(status=400)

class deluser(APIView):
def post(self,request):
id=request.data.get('id')
UserInfo.objects.filter(id=id).delete()

return Response({"msg":'删除成功',"state":"true"})



# def index(request):
# return HttpResponse("欢迎使用")
#
#
# def user_list(request):
# return render(request,"user_list.html")
#
# class ApiLogin(APIView):
# def get(self,request):
# return HttpResponse('get')
# def post(self,request):
# UserInfo.objects.create(name='张三',password='123456',age=15,tel='1234567891')
# obj=UserInfo.objects.all()
# print(obj)
# return HttpResponse('post')
#
# class ApiDel(APIView):
# def post(self,request):
# UserInfo.objects.filter(id=4).delete()
# return HttpResponse('删除成功')

5.序列化 反序列化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# -*- coding: utf-8 -*-
from rest_framework import serializers
from app01.models import UserInfo


class APIViewUserInfo(serializers.Serializer):
"""图书数据序列化器"""
id = serializers.IntegerField(label='ID', read_only=True) # 主键序列化
# 第一:普通字段序列化
name = serializers.CharField(label='名称', max_length=20)
password = serializers.CharField(label='密码')
age = serializers.IntegerField(label='年龄', required=False)
tel = serializers.IntegerField(label='电话', required=False)
# # 第二:一对多字段序列化
# heroinfo_set = serializers.PrimaryKeyRelatedField(read_only=True, many=True)
# # 第三:自定义显示(显示多对多)
# xxx = serializers.SerializerMethodField(read_only=True)

class Meta:
model = UserInfo

# 自定义显示 多对多 字段

# 定义创建语法:ser.save()执行,就会立刻调用create方法用来创建数据
def create(self, validated_data):
'''validated_data: 表单或者vue请求携带的json:{"username":"zhangsan","password":"123456"}'''
return self.Meta.model.objects.create(**validated_data)
上一篇:
react页面滚动监控
下一篇:
python 钉钉机器人推送消息
本文目录
本文目录