python Django实现增删改查实战代码
来源:脚本之家    时间:2022-02-19 15:10:02

1.先创建个app子级

python .\manage.py startapp app01

然后创建数据模型

app01下的
modules.py文件

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)

配置数据库

"default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "数据库名",
        "USER": "数据库用户名",
        "PASSWORD": "密码",
        "HOST": "127.0.0.1",
        "PORT": "3306",
    }

2.迁移数据库

python manage.py makemigrations 和 python manage.py migrate

3.写路由url

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页面编写增删改查

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.序列化 反序列化

# -*- 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)

到此这篇关于python Django增删改查 快速体验的文章就介绍到这了,更多相关python Django增删改查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

关键词: 反序列化 数据传递 相关文章 希望大家 数据模型

X 关闭

X 关闭