Django类视图,admin,ORM特殊模型的运用

记载Django类试图的一些运用,包括路由,类试图的编写方式,admin的基础编写

1、类试图

1.1 注册类试图的写法

class Register(View):
    """
    注册功能
    """
    def get(self, request):
        # 如果不是 POST 请求,返回错误或者重定向
        return JsonResponse({'error': 'Method not allowed'}, status=405)

    def post(self, request):
        # 获取前端发送的数据
        try:
            data = json.loads(request.body)
        except json.JSONDecodeError:
            return JsonResponse({'error': 'Invalid JSON'}, status=400)
        user_info = {
            'username': data['username'],
            'password': data['password']
        }
        does_exist = UserModel.objects.filter(username=data['username']).exists()
        if does_exist:
            return JsonResponse({
                'code': '201',
                'msg': '用户已存在!'
            })
        # print(data['password'], data['username'])
        UserModel.objects.create(username=data['username'], password=data['password'])
        RegisterCount.objects.create()
        # 返回 JSON 响应
        return JsonResponse({
            'code': '200',
            'msg': '用户已注册成功!'
        })

    @csrf_exempt
    def dispatch(self, request, *args, **kwargs):
        return super(Register, self).dispatch(request, *args, **kwargs)


1.2 登录类试图的写法

class Login(View):
    """
    登录
    """
    def get(self, request):
        LoginCount.objects.create()
        user_info = UserModel.objects.all().values()  # 获得所有用户信息的字典列表
        return JsonResponse(list(user_info), safe=False)

    def post(self, request):
        user_info = UserModel.objects.all().values()  # 获得所有用户信息的字典列表
        return JsonResponse(list(user_info), safe=False)

    @csrf_exempt
    def dispatch(self, request, *args, **kwargs):
        return super(Login, self).dispatch(request, *args, **kwargs)

1.3 路由的写法,分到app下的路由写法在这里插入图片描述

在配置项下面的url.py

from django.contrib import admin
from django.conf.urls import url, include
urlpatterns = [
    url(r'^user/', include('lane_detection_back_app.urls')),
]

app下面下面的url.py

from django.conf.urls import url
from .views import Register, Login

urlpatterns = [
    url(r'^register$', Register.as_view(), name="register"),
    url(r'^login', Login.as_view(), name="login"),
]

2、admin运用

引入admin并对其进行相应操作

from django.contrib import admin
from .models import User
# Register your models here.

@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    # 实现ID排序
    ordering = ('user_id',)
    # 构建搜索框
    search_fields = ['user_id', 'name', 'gender']

    # def get_search_results(self, request, queryset, search_term):
    #     if search_term in dict(User.gender).keys():
    #         queryset = queryset.filter(gender=search_term)
    #     else:
    #         queryset, use_distinct = super().get_search_results(request, queryset, search_term)
    #     return queryset, use_distinct
    
    # 显示字段
    list_display = ('user_id', 'name', 'email', 'password', 'gender', 'created_at')
    
# 注册数据表
# admin.site.register(User, UserAdmin)

3、ORM特殊模型编写

gender = [
        (0, '男'),
        (1, '女')
    ]
    gender = models.SmallIntegerField(default=0, verbose_name='性别', choices=gender)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值