(转)一个简单的rest_framework demo
转发:https://www.cnblogs.com/fu-yong/p/9100559.html
models.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from django.db import models class UserInfo(models.Model): username = models.CharField(max_length = 32 ) password = models.CharField(max_length = 32 ) role_choice = (( 1 , '管理员' ),( 2 , '普通用户' )) role = models.IntegerField(choices = role_choice) class BWH(models.Model): '''三围信息''' bust = models.IntegerField(verbose_name = '胸围' ) waist = models.IntegerField(verbose_name = '腰围' ) hips = models.IntegerField(verbose_name = '臀围' ) user = models.OneToOneField(to = UserInfo) |
serializers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from rest_framework import serializers from app01 import models class BWHModelSerializer(serializers.ModelSerializer): class Meta: model = models.BWH fields = '__all__' class UserModelSerializer(serializers.ModelSerializer): class Meta: model = models.UserInfo fields = '__all__' |
permission.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
from rest_framework.permissions import BasePermission from app01 import models class AdminPermission(BasePermission): '''管理员权限认证''' message = '您没有权限访问!' def has_permission( self , request, view): user_id = request.GET.get( 'uid' ) user = models.UserInfo.objects. filter (pk = user_id).first() if not user or user.role = = 2 : return False else : return True |
auth.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions import AuthenticationFailed from app01 import models class BlackNameAuth(BaseAuthentication): '''黑名单认证''' def authenticate( self , request): BLACK_NAME_LIST = [ '小花' , '小翠' ] # 通过从url获取user_id的方式模拟用户登录 user_id = request.GET.get( 'uid' ) user = models.UserInfo.objects. filter (pk = user_id).first() if not user or user.username in BLACK_NAME_LIST: raise AuthenticationFailed( '您没有登录或者被关小黑屋啦' ) else : return user.username,user_id |
urls.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
from django.conf.urls import url,include from django.contrib import admin from rest_framework import routers from app01 import views # 实例化一个routers对象 routers = routers.DefaultRouter() # 往对象里注册(添加)url routers.register( 'bwh' ,views.BWHViewSet) routers.register( 'user' ,views.UserViewSet) urlpatterns = [ url(r '^admin/' , admin.site.urls), url(r'',include(routers.urls)) ] |
view.py
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
|
from app01.serializers import BWHModelSerializer from app01.serializers import UserModelSerializer from rest_framework.viewsets import ModelViewSet from app01 import models from app01.auth import BlackNameAuth from app01.permission import AdminPermission from rest_framework.pagination import PageNumberPagination class MyPagination(PageNumberPagination): '''分页,自定义每页显示2条''' page_size = 2 class BWHViewSet(ModelViewSet): '''在黑名单中的用户禁止查看三围信息''' authentication_classes = [BlackNameAuth] # 分页 pagination_class = MyPagination serializer_class = BWHModelSerializer queryset = models.BWH.objects. all () class UserViewSet(ModelViewSet): '''非管理员禁止查看用户信息''' permission_classes = [AdminPermission] # 分页 pagination_class = MyPagination serializer_class = UserModelSerializer queryset = models.UserInfo.objects. all () |
(转)一个简单的rest_framework demo的更多相关文章
- 一个简单的rest_framework demo
models.py from django.db import models class UserInfo(models.Model): username = models.CharField(max ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- spring boot一个简单用户管理DEMO
概述 该Demo旨在部署一个简单spring boot工程,包含数据编辑和查看功能 POM配置 <?xml version="1.0" encoding="UTF- ...
- .net core api +swagger(一个简单的入门demo 使用codefirst+mysql)
前言: 自从.net core问世之后,就一直想了解.但是由于比较懒惰只是断断续续了解一点.近段时间工作不是太忙碌,所以偷闲写下自己学习过程.慢慢了解.net core 等这些基础方面学会之后再用.n ...
- 实现一个简单的虚拟demo算法
假如现在你需要写一个像下面一样的表格的应用程序,这个表格可以根据不同的字段进行升序或者降序的展示. 这个应用程序看起来很简单,你可以想出好几种不同的方式来写.最容易想到的可能是,在你的 JavaScr ...
- MySQL一个简单的存储过程demo
使用的工具是Navicat for MySQL. 首先创建一个学生表 mysql) ) ) auto_increment,age ) ) not null,primary key(s_no)); Qu ...
- 一个简单的直播demo for java
obs推流,nginx挂rtmp模块,配置rtmp端口,obs向此端口推流,video.js H5拉流播放 加阿里CDN 超级简单- -
- 一个简单的单例模式Demo
/** * @author :nx014924 * @date :Created in 5/30/2021 1:09 PM * @description: * @modified By: * @ver ...
- 一个简单地template模板
之前的项目中用到了artTemplate模板,感觉挺有意思,于是查看相关资料,自己动手写了个简单地template模板插件.虽然会有一些不足,但也是自己的一番心血.主体代码如下 /* * 一个简单地t ...
随机推荐
- PHP开发中遇到的问题
1. 数据库连接 问题:在执行sql语句的函数中,因为strsql用单引号引住,所以里面的变量值无法获得, 方法一: 通过字符串连接的方式完成(.):‘字符串’+.变量来构成一条完整的sql语句.如下 ...
- layer关闭当前窗口并刷新父窗口
window.parent.location.reload(); var index = parent.layer.getFrameIndex(window.name); parent.layer.c ...
- python apsheduler cron 参数解析
from:https://apscheduler.readthedocs.io/en/v2.1.2/cronschedule.html Cron-style scheduling This is th ...
- 最简单的ASP.Net连接查询Oracle,输出查询数据到表格中
VS2012中新建Windows窗体应用程序.Oracle中建测试数据表Test.(此处需要环境已配好情况下进行操作) 用到的数据表 向Windows窗体应用程序,设计界面托一个按钮和一个数据表格视图 ...
- C#反射使用时注意BindingFlags的用法(转载)
最近刚刚开始用反射做项目,遇到一个小的知识点,记录一下. c#反射查找方法时,默认只能查到public方法.如果想要查找private方法,需要设定BindingFlags. 即: Bindin ...
- TCP\UDP客户—服务器程序设计基本框架流程图
- 实验吧web天网管理系统
直接查看源码 <!--$test=$_GET['username']>这一行 源码的下面给了我们一些提示:我们输入的username经过md5加密后会赋值给test.当test为0时就会跳 ...
- MS datatype define(微软数据类型定义)
这里根据MS文档整理了微软数据类型的定义, 参考文档:https://docs.microsoft.com/zh-cn/openspecs/windows_protocols/ms-dtyp/2463 ...
- GoLand(二)语言结构和基础语法
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.Go语言结构1.Go语言有6大部分组成,分别是:包声明.引入包.函数.变量.语句或表达式.注释2.输出一个He ...
- 由Handle转换为控件
Control c = Control.FromHandle(this.textBox1.Handle); TextBox f = c as TextBox;