一.2.序列化使用之用户资源功能app
1.环境准备:
(1).新建功能app:
(python36env) [vagrant@CentOS7 devops]$ python manage.py startapp users ---建议以后用命令行建不要用pycharm
(python36env) [vagrant@CentOS7 devops]$ mv users apps/
(python36env) [vagrant@CentOS7 devops]$ ls
apps devops logs manage.py __pycache__
(2).激活app:
INSTALLED_APPS = [.....
'idcs.apps.IdcsConfig',
'users.apps.UsersConfig'
]
(3).apps/ursl.py---注意以后的url都如下这样写,而不用再单独建app的urls文件了,项目就只有此一urls文件,所有app的url都注册到路由DefaultRouter()中即可from django.conf.urls import include, url
from django.contrib import admin
from rest_framework.routers import DefaultRouter
from idcs.views import IdcViewset_v7 route = DefaultRouter()
route.register("idcs", IdcViewset_v7, basename="idcs")
route.register("users", UserViewset, basename="users")
urlpatterns = [
url(r'^', include(route.urls)) ---->把route中的app的路由转换成django的路由
] (4).apps/idcs/views.py中:
########################## 版本七 ############################
from rest_framework import viewsets
class IdcViewset_v7(viewsets.ModelViewSet):
queryset = Idc.objects.all()
serializer_class = IdcSerializer
(python36env) [vagrant@CentOS7 devops]$ python manage.py runserver 0.0.0.0:8000 运行后效果如下

2.写users用户资源功能:
(1)用户模型django内置已写,所以这里我不写了
(python36env) [vagrant@CentOS7 devops]$ python manage.py dbshell
MariaDB [devops]> desc auth_user; --查看有哪些字段
(2)写用户资源的序列化文件users/serializers.py
from rest_framework import serializers #新建序列化类并继承序列化模块中的序列化类
class UserSerializer(serializers.Serializer):
'''
用户序列化类
'''
#开始写给前端返回的字段--返回给前端调用者的数据类型
username = serializers.CharField()
email = serializers.EmailField()
(3)写用户资源的viewset视图,注意对一个资源一般有5种操作(get,put,push,delete,)'''注意对一个资源一般有如下5种操作:所以这里要考虑这个UserViewset类要实现哪几个操作(如果用户添加,删除都要则如下5种都用),但是
这里我实现的是只能获取不能修改的功能,所以这个类只需继承readonly这个viewset类即可
get:
list
get 单个对象
create
update
delete
'''
users/views.py中:
from django.shortcuts import render
from rest_framework import viewsets
#from django.contrib.auth.models import User 以后建议换成下面这种写法
from django.contrib.auth import get_user_model
from .serializers import UserSerializer User = get_user_model()
class UserViewset(viewsets.ReadOnlyModelViewSet):
'''
这个用户资源的viewset会给外面暴露两个接口retrieve和list
retrieve:
返回指定用户信息对象--单个对象的字段是在用户序列化类serializers.py中定义
list:
返回用户列表--列表的字段的字段是在用户序列化类serializers.py中定义
'''
#1.指定queryset
queryset = User.objects.all()
#2.指定序列化类
serializer_class = UserSerializer
(4)把这个用户资源的viewset注册到router中devops/urls.py中:
from django.conf.urls import include, url
from django.contrib import admin
from rest_framework.routers import DefaultRouter
from idcs.views import IdcViewset
from apps.users.views import UserViewset route = DefaultRouter()
route.register("idcs", IdcViewset, basename="idcs")
#注册时三个参数:资源定位符,类,别名
route.register("users", UserViewset, basename="users")
urlpatterns = [
url(r'^', include(route.urls))
]


(python36env) [vagrant@CentOS7 devops]$ python manage.py makemigrations
(python36env) [vagrant@CentOS7 devops]$ python manage.py migrate
(5)为测试,给它来点数据:
(python36env) [vagrant@CentOS7 devops]$ python manage.py shell 通过django的shell创建用户
In [3]: from django.contrib.auth.models import User In [4]: def create_user(name):
...: for i in range(1,20):
...: username = "{}-{}".format(name,i)
...: User.objects.create_user(username, "{}@51reboot.com".format(username),"")
In [11]: create_user("rock")
In [12]: create_user("panda")
In [13]: create_user("wd")
In [14]: create_user("pc")
刷新后如下图,拿到数据了:

IdcViewset
一.2.序列化使用之用户资源功能app的更多相关文章
- 使用Struts框架,实现用户登陆功能
前言:本篇文章是本人这周学习的一个小结,在自我总结的同时,希望也能够给其他同学带来一点帮助.本文主要知识是参照书本上的知识点以及网上其他博客文章,在上机操练后的所得,具体源码主要来自http://bl ...
- Ruby on Rails Tutorial 第二章 之 用户资源&MVC&REST
说明:用户资源包括用户数据模型和这个模型相关的Web页面. 1.用户数据模型如下: 2.使用Rails内置的脚手架生成用户资源中,执行如下所示命令: $ rails generate scaffold ...
- 使用Struts1完成用户登录功能
1.Struts框架 框架(framework):就是一系列代码和开发模式的整合,使用框架后,所有开发人员都会按照框架提供的规范进行开发,使代码更容易维护和扩展. 使用框架的优点: 1) 易于维护 ...
- “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第四篇(用户管理功能的实现)
“MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第四篇(用户管理功能的实现) 一.前三篇的内容是否对您有帮助呢?如果有的话,请您继续关注这篇吧,这篇主要是实现”用户管理“的 ...
- Struts2整合Hibernate3实现用户登录功能
所用技术:struts2 ,hibernate,jsp,mysql 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰 ...
- 014医疗项目-模块一:删除用户的功能l
删除用户的功能我们还是按照:Dao->Service->Action->页面调试这种顺序来写. Dao: 我们使用逆向工程生成的方法就好: SysuserMapper sysuser ...
- JavaWeb学习记录(六)——用户登录功能
使用JDBC.spring框架.servlet实现一个简单的用户登录功能. 一.mySql数据库 SET FOREIGN_KEY_CHECKS=0; -- ---------------------- ...
- 实现Web上的用户登录功能
关于如何实现web上的自动登录功能 文章来源http://coolshell.cn/articles/5353.html Web上的用户登录功能应该是最基本的功能了,可是在我看过一些站点的用户登录功能 ...
- oAuth 使得第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权
OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可 ...
随机推荐
- 消费者启动,允许期间报task supervisor timed out 异常,解决
如何解决后端项目启动时抛出 task supervisor timed out 异常 现象描述 后端项目启动时抛出如下异常,但是该后段项目能正常启动并注册到注册中心,不影响功能使用. 2018-10- ...
- Scrapy 小技巧(一):使用 scrapy 自带的函数(follow & follow_all)优雅的生成下一个请求
前言 如何优雅的获取同一个网站上下一次爬取的链接并放到生成一个 Scrapy Response 呢? 样例 from urllib import parse import scrapy class S ...
- pip常出问题的操作
pip 是一个 Python 包安装与管理工具. 以pip安装yaml为主: 1.更新pip 打开cmd命令,安装yaml包,输入pip install pyyaml,提示pip已过期 更新pip版本 ...
- chrome浏览器版本与驱动不匹配问题的解决办法
1.浏览器与驱动如何匹配才不会报错 使用selenium模块的webdriver打开谷歌浏览器时常遇到这样的错误提示: selenium.common.exceptions.WebDriverExce ...
- Python3.7解释器+sublime Text3编辑器+案例打包软件+Python语言程序设计基础教材
编辑器:https://nsyw.lanzous.com/i7lcdyh Python3.7 https://nsyw.lanzous.com/i7a299c 案例 https://nsyw.lanz ...
- 【String注解驱动开发】如何按照条件向Spring容器中注册bean?这次我懂了!!
写在前面 当bean是单实例,并且没有设置懒加载时,Spring容器启动时,就会实例化bean,并将bean注册到IOC容器中,以后每次从IOC容器中获取bean时,直接返回IOC容器中的bean,不 ...
- 4-react 组件之间传值。
1.传值: 都是使用props和state结合得方式进行组件之间得传值 再react中传值得话是父子组件之间得传值,一般会把父组件中得state值通过props传给子组件,再子组件中使用props进行 ...
- 2020/06/06 JavaScript高级程序设计 面向对象的程序设计
ECMAScript虽然是一种面向对象的语言,但是他没有类的概念.所以他的对象也与其他语言中的对象有所不同. ECMA-262定义对象:一组没有特定顺序的值. 6.1 理解对象 创建对象的方法: 1. ...
- Asp.Net Core入门之自定义服务注册
谈到服务注册,首先我们先了解一下服务注册时使用的三种方式,也代表了不同的服务生命周期: AddTransient AddScoped AddSingleton AddSingleton生命周期最长,其 ...
- 【分区】使用 MBR 分区表分区并格式化
注意: 本方法仅适用于容量小于 2TB 的硬盘进行分区及格式化.大于 2TB 的硬盘的分区及格式化请使用 GPT方式,可参阅 使用 GPT 分区表分区并格式化. 格式化后,数据盘中的数据将被全部清空. ...