记载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)