zoukankan      html  css  js  c++  java
  • 注册接口

    注册接口

    项目初始化

    settings.py

    INSTALLED_APPS = [
        # ...
        'rest_framework',
    ]
    
    MEDIA_URL = '/media/'
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
    # 自定义用户表
    AUTH_USER_MODEL = 'api.User'
    

    主 urls.py

    from django.conf.urls import url, include
    from django.contrib import admin
    
    from django.views.static import serve
    from django.conf import settings
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        # 路由分发
        url(r'^api/', include('api.urls')),
    
        url(r'^media/(?P<path>).*', serve, {'document_root': settings.MEDIA_ROOT}),
    ]
    

    子 urls.py

    from django.conf.urls import url, include
    from rest_framework.routers import SimpleRouter
    router = SimpleRouter()
    from . import views
    
    # 路由注册
    # router.register('register', views.RegisterViewSet, 'register')
    
    urlpatterns = [
    
        url('', include(router.urls))
    ]
    

    models.py

    from django.contrib.auth.models import AbstractUser
    from django.db import models
    
    
    class User(AbstractUser):
        mobile = models.CharField(max_length=11, unique=True, verbose_name='移动电话')
        icon = models.ImageField(upload_to='icon', default='icon/default.png', verbose_name='头像')
    
        class Meta:
            db_table = 'o_user'
            verbose_name_plural = '用户表'
    
        def __str__(self):
            return self.username
    
    
    class Book(models.Model):
        name = models.CharField(max_length=64, verbose_name='书名')
    
        class Meta:
            db_table = 'o_book'
            verbose_name_plural = '书表'
    
        def __str__(self):
            return self.name
    
    
    class Car(models.Model):
        name = models.CharField(max_length=64, verbose_name='车名')
    
        class Meta:
            db_table = 'o_car'
            verbose_name_plural = '车表'
    
        def __str__(self):
            return self.name
    

    注册接口

    urls.py

    router.register('register', views.RegisterViewSet, 'register')
    

    views.py

    from rest_framework.viewsets import GenericViewSet, ModelViewSet
    from rest_framework import mixins
    from . import models, serializers
    
    class RegisterViewSet(GenericViewSet, mixins.CreateModelMixin):
        queryset = models.User.objects.filter(is_active=True).all()
        serializer_class = serializers.RegisterSerializer
    
    

    serializers.py

    from rest_framework import serializers
    from rest_framework.exceptions import ValidationError
    from . import models
    
    
    class RegisterSerializer(serializers.ModelSerializer):
        re_password = serializers.CharField(write_only=True, min_length=8, max_length=18)
        class Meta:
            model = models.User
            fields = ('username', 'password', 're_password', 'mobile')
            extra_kwargs = {
                'password': {
                    'write_only': True,
                    'min_length': 8,
                    'max_length': 18
                }
            }
    
        # username和mobile可以自定义局部钩子校验(省略)
    
        def validate(self, attrs):
            password = attrs.get('password')
            re_password = attrs.pop('re_password')
            if password != re_password:
                raise ValidationError({'re_password': 'password confirm error'})
            return attrs
    
        # 需要重写create,创建用户需要密文
        def create(self, validated_data):
            return models.User.objects.create_user(**validated_data)
    


    用户中心接口

    urls.py

    router.register('user/center', views.UserCenterViewSet, 'center')
    

    views.py

    class UserCenterViewSet(GenericViewSet, mixins.RetrieveModelMixin):
        queryset = models.User.objects.filter(is_active=True).all()
        serializer_class = serializers.UserCenterSerializer
    

    serializer.py

    class UserCenterSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.User
            fields = ('username', 'mobile', 'icon', 'email')
    


    图书资源接口

    urls.py

    router.register('books', views.BookViewSet, 'book')
    

    views.py

    class BookViewSet(ModelViewSet):
        queryset = models.Book.objects.all()
        serializer_class = serializers.BookSerializer
    

    serializers.pu

    class BookSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Book
            fields = ('name', )
    
  • 相关阅读:
    FASM学习中的一些表格
    Win32汇编学习(7):鼠标输入消息
    Win32汇编学习(6):键盘输入消息
    Win32汇编学习(5):绘制文本2
    Win32汇编学习(4):绘制文本
    Win32汇编学习(3):简单的窗口
    怎样建立你自己的MASM导入库
    win32 汇编学习(2):消息框
    Win32汇编学习(1):基本概念
    win32汇编(ASM)学习资源
  • 原文地址:https://www.cnblogs.com/kai-/p/12357931.html
Copyright © 2011-2022 走看看