• djangoMTV初探


    1.restful请求方式
    一个视图对应多个操作(增删改查)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    老的方式
    在这里插入图片描述
    在这里插入图片描述

    views.py

    from django.shortcuts import render
    from django.http import HttpResponse,request,QueryDict, JsonResponse
    from myapp.models import User
    from django.views.generic import View
    # Create your views here.
    def user(request):
        if request.method == "GET":
            return HttpResponse("获取用户")
        elif request.method == "POST":
            name = request.POST.get('name')
            city = request.POST.get('city')
            sex = request.POST.get('sex')
            age = request.POST.get('age')
            User.objects.create(
                name=name,
                city=city,
                sex=sex,
                age=age
            )
            return HttpResponse("创建用户成功!")
        elif request.method == "PUT":
            data = QueryDict(request.body)
            id = data.get('id')
            user_obj = User.objects.get(id=id)
            user_obj.city = data.get('city')
            user_obj.sex = data.get('sex')
            user_obj.age = data.get('age')
            user_obj.save()
            # 方式2
            # data = {'city': data.get('city'), 'sex': data.get('sex'), 'age': data.get('age')}
            # User.objects.filter(id=id).update(**data)
            res = {'code': 200, 'msg': '更新成功!'}
            return JsonResponse(res)
        elif request.method == "DELETE":
            # request有GET和POST,没有DELETE和PUT
            data = QueryDict(request.body)
            id = data.get('id')
            try:
                User.objects.get(id=id).delete()
                res = {'code': 200, 'msg': '删除用户成功!'}
            except Exception:
                res = {'code': 500, 'msg': '删除用户失败!'}
    
            return JsonResponse(res)#返回的是json对象,httpresponse返回的是字符串
    
    def user_edit(request):
        id = request.GET.get('id')
        user_obj = User.objects.get(id=id)
        return render(request, 'user_edit.html', {'id': id, 'user': user_obj})
    
    def user_add(request):
        return render(request, 'user_add.html')
    
    def user_list(request):
        user_list = User.objects.all()
        return render(request,'user_list.html',{'user_list': user_list})
    # 上面是老式的api请求方式,
    
    • 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

    user_list.html

    
    
    
        
        列出所有用户
        
    
    
    
    
            {% for i in user_list %}
            
            {% endfor %}
        
    ID 姓名 城市 性别 年龄 操作
    {{ i.id }} {{ i.name }} {{ i.city }} {{ i.sex }} {{ i.age }}
    • 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

    user_edit.html

    
    
    
        
        编辑用户
        
    
    
    

    编辑用户

    姓名:
    城市:
    性别:
    年龄:
    • 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

    user_add.html

    
    
    
        
        创建用户
    
    
    

    创建用户

    姓名:
    城市:
    性别:
    年龄:
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    myapp/urls.py

    from django.contrib import admin
    from django.urls import path,include
    from myapp import views
    
    urlpatterns = [
        path('user/',views.user),
        path('user_list/',views.user_list),
        path('user_add/',views.user_add),
        path('user_edit/', views.user_edit)
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述
    上述是函数视图,if多分支的方式。

    用django的类进行替换,类视图

    
    class UserView(View):
        def get(self, request):
            if request.GET.get('id'):
                pass
                # user_obj = User.objects.get(id=request.GET.get('id'))
                # res = {'code': 200, 'msg': '成功!', user_obj: user_obj}
                # return JsonResponse(res)
            else:
                user_list = User.objects.all()
                return render(request, 'user_list.html', {'user_list': user_list})
    
        def post(self, request):
            name = request.POST.get('name')
            city = request.POST.get('city')
            sex = request.POST.get('sex')
            age = request.POST.get('age')
            User.objects.create(
                name=name,
                city=city,
                sex=sex,
                age=age
            )
            return HttpResponse("创建用户成功!")
    
        def put(self, request):
            data = QueryDict(request.body)
            id = data.get('id')
            user_obj = User.objects.get(id=id)
            user_obj.city = data.get('city')
            user_obj.sex = data.get('sex')
            user_obj.age = data.get('age')
            user_obj.save()
            # 方式2
            # data = {'city': data.get('city'), 'sex': data.get('sex'), 'age': data.get('age')}
            # User.objects.filter(id=id).update(**data)
            res = {'code': 200, 'msg': '更新成功!'}
            return JsonResponse(res)
    
        def delete(self, request):
            data = QueryDict(request.body)
            id = data.get('id')
            try:
                User.objects.get(id=id).delete()
                res = {'code': 200, 'msg': '删除用户成功!'}
            except Exception:
                res = {'code': 500, 'msg': '删除用户失败!'}
    
            return JsonResponse(res)
    
    
    • 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

    urls.py

    from django.contrib import admin
    from django.urls import path
    from . import views
    
    urlpatterns = [
        # path('user/', views.user),
        path('user/', views.UserView.as_view()),   #类视图用的url地址
        path('user_add', views.user_add),
        path('user_edit', views.user_edit)
    ]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    C# Fleck Socket
    51-45 Diffuser,生成柔性行为的扩散轨迹规划
    「PHP基础知识」隐式数据类型
    9 客户端认证方式 之 PKCE
    LeetCode //C - 200. Number of Islands
    CMake引入三方库
    sql中COALESCE函数详解
    JS 数组 splice 用法
    SSL证书有效期越来越短是什么原因?
    《golang设计模式》第三部分·行为型模式-05-仲裁者/中介模式(Mediator)
  • 原文地址:https://blog.csdn.net/wyl9527/article/details/132841420