中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

寧波百度做網(wǎng)站的公司哪家好亞馬遜跨境電商開店流程及費用

寧波百度做網(wǎng)站的公司哪家好,亞馬遜跨境電商開店流程及費用,做網(wǎng)站費用聯(lián)系方式,旅游酒店網(wǎng)站建設(shè)用drf編寫 1 有車型(CarModel),車廠(CarFactory),經(jīng)銷商(Distributor)三個表, 一個車廠可以生產(chǎn)多種車型,一個經(jīng)銷商可以出售多種車型,一個車型可以有多個經(jīng)銷商出售車型:車型名,車型…

用drf編寫

'''
1 有車型(CarModel),車廠(CarFactory),經(jīng)銷商(Distributor)三個表,
一個車廠可以生產(chǎn)多種車型,一個經(jīng)銷商可以出售多種車型,一個車型可以有多個經(jīng)銷商出售車型:車型名,車型出廠價,車廠id車廠:車廠名,車廠地址,聯(lián)系電話經(jīng)銷商:經(jīng)銷商名,地址,聯(lián)系電話
2 有用戶表,基于django內(nèi)置user表,擴(kuò)展mobile字段
3 編寫登陸接口,jwt方式返回token,格式為{status:100,msg:登陸成功,token:safasdfa}
4 所有接口(除登錄外),必須登錄后才能訪問
5 管理員登陸后可以增,刪,單查,群查,改 車型,車廠,經(jīng)銷商(具備所有接口權(quán)限)
6 普通用戶登陸可以查看車型,車廠,經(jīng)銷商單條,所有(只有查看權(quán)限)
7 所有查詢所有接口帶分頁功能
8 查詢所有車型接口,可以按車型名字精準(zhǔn)過濾加分項:
用戶注冊接口
管理員有用戶鎖定,刪除用戶功能
'''

models.py

from django.db import modelsfrom django.contrib.auth.models import AbstractUserclass User(AbstractUser):mobile = models.CharField(max_length=32, verbose_name='聯(lián)系電話')# 車型
class CarModel(models.Model):name = models.CharField(max_length=32, verbose_name='車型名')init_price = models.IntegerField(verbose_name='出廠價')factory = models.ForeignKey(to='CarFactory', on_delete=models.CASCADE, verbose_name='車廠id')distributors = models.ManyToManyField(to='Distributor', verbose_name='經(jīng)銷商')class Meta:verbose_name_plural = '經(jīng)銷商表'def __str__(self):return self.namedef factory_info(self):'''車廠信息'''return {'name': self.factory.name, 'addr': self.factory.addr, 'mobile': self.factory.mobile}def distributor_info(self):'''經(jīng)銷商信息'''distributor_info_list = []for distributor in self.distributors.all():distributor_info_list.append({'name': distributor.name, 'addr': distributor.addr,'mobile': distributor.mobile})return distributor_info_list# 車廠
class CarFactory(models.Model):name = models.CharField(max_length=32, verbose_name='車廠名')addr = models.CharField(max_length=32, verbose_name='車廠地址')mobile = models.CharField(max_length=32, verbose_name='聯(lián)系電話')class Meta:verbose_name_plural = '經(jīng)銷商表'def __str__(self):return self.name# 經(jīng)銷商
class Distributor(models.Model):name = models.CharField(max_length=32, verbose_name='經(jīng)銷商名')addr = models.CharField(max_length=32, verbose_name='地址')mobile = models.CharField(max_length=32, verbose_name='聯(lián)系電話')class Meta:verbose_name_plural = '經(jīng)銷商表'def __str__(self):return self.name

新建一個jwt_response.py驗證登錄

def jwt_response_payload_handler(token, user, request):return {'code': 100,'msg': '登錄成功','token': token}

新建一個exceptions.py驗證錯誤

from rest_framework.views import exception_handler
from rest_framework.response import Responsedef common_exception(exc, context):res = exception_handler(exc, context)if not res:return Response({'code': 999, 'msg': f'非drf錯誤,錯誤信息是:{str(exc)}'})return Response({'code': 666, 'msg': f'這是drf錯誤,錯誤信息是:{res.data.get("detail")}'})

settings.py配置文件中

JWT_AUTH = {'JWT_RESPONSE_PAYLOAD_HANDLER': 'app01.jwt_response.jwt_response_payload_handler','JWT_EXPIRATION_DELTA': datetime.timedelta(days=1)
}REST_FRAMEWORK = {'EXCEPTION_HANDLER': 'app01.exceptions.common_exception',
}

新建page.py分頁

from rest_framework.pagination import PageNumberPaginationclass MyPageNumberPagination(PageNumberPagination):page_size = 3  # 每頁顯示3條max_page_size = 5  # 每頁最大顯示5條

新建serializer.py分頁

from rest_framework import serializersfrom app01.models import User, CarModel, CarFactory, Distributorclass UserSerializer(serializers.ModelSerializer):class Meta:model = Userfields = ['username', 'password', 'mobile']extra_kwargs = {'password': {'write_only': True}}def create(self, validated_data):user = User.objects.create_user(**validated_data)return userclass CarModelSerializer(serializers.ModelSerializer):class Meta:model = CarModelfields = ['id', 'name', 'init_price', 'factory', 'distributors', 'factory_info', 'distributor_info']extra_kwargs = {'factory': {'write_only': True},'distributors': {'write_only': True},'factory_info': {'read_only': True},'distributor_info': {'read_only': True},}class CarFactorySerializer(serializers.ModelSerializer):class Meta:model = CarFactoryfields = '__all__'class DistributorSerializer(serializers.ModelSerializer):class Meta:model = Distributorfields = '__all__'

新建permission.py權(quán)限

from rest_framework.permissions import BasePermission
from rest_framework.exceptions import AuthenticationFailedclass MyPermission(BasePermission):def has_permission(self, request, view):print(view.action)if not request.user.is_superuser and request.method != 'GET':raise AuthenticationFailed('普通用戶,權(quán)限不足')return True

views.py視圖中

from rest_framework.viewsets import ViewSet
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import CreateModelMixinfrom .models import User
from .serializer import UserSerializerfrom rest_framework.response import Responseclass UserView(ViewSet, GenericAPIView, CreateModelMixin):queryset = User.objects.all()serializer_class = UserSerializerdef create(self, request, *args, **kwargs):ser = self.get_serializer(data=request.data)if ser.is_valid():ser.save()return Response({'code': 100, 'msg': '注冊成功', 'result': ser.data})return Response({'code': 101, 'msg': '注冊失敗', 'result': ser.errors})from rest_framework.mixins import DestroyModelMixin
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
from rest_framework.permissions import IsAuthenticated, IsAdminUser
from rest_framework.decorators import actionclass AdminView(ViewSet, GenericAPIView, DestroyModelMixin):queryset = User.objects.all()authentication_classes = [JSONWebTokenAuthentication]permission_classes = [IsAuthenticated, IsAdminUser]# detail=True 表示可以刪除單個資源@action(methods=['DELETE'], detail=True)def delete_user(self, request, *args, **kwargs):return self.destroy(request, *args, **kwargs)@action(methods=['GET'], detail=True)def lock(self, request, *args, **kwargs):user = self.get_object()if user is None:return Response({'code': 101, 'msg': '用戶不存在'})if user.is_active:user.is_active = Falseuser.save()return Response({'code': 100, 'msg': '用戶鎖定成功'})return Response({'code': 102, 'msg': '用戶已經(jīng)被鎖定'})@action(methods=['GET'], detail=True)def unlock(self, request, *args, **kwargs):user = self.get_object()if user is None:return Response({'code': 101, 'msg': '用戶不存在'})if user.is_active is False:user.is_active = Trueuser.save()return Response({'code': 100, 'msg': '用戶解鎖成功'})return Response({'code': 102, 'msg': '用戶已經(jīng)解鎖過了'})from rest_framework.viewsets import ModelViewSetfrom .models import CarModel
from .serializer import CarModelSerializer
from .permissions import MyPermission
from .page import MyPageNumberPaginationfrom django_filters.rest_framework import DjangoFilterBackendclass CarModelView(ModelViewSet):queryset = CarModel.objects.all()serializer_class = CarModelSerializer# 認(rèn)證authentication_classes = [JSONWebTokenAuthentication]# 權(quán)限permission_classes = [IsAuthenticated, MyPermission]# 分頁pagination_class = MyPageNumberPagination# 過濾filter_backends = [DjangoFilterBackend]filterset_fields = ['name']from .models import CarFactory
from .serializer import CarFactorySerializerclass CarFactoryView(ModelViewSet):queryset = CarFactory.objects.all()serializer_class = CarFactorySerializerpagination_class = MyPageNumberPaginationauthentication_classes = [JSONWebTokenAuthentication]permission_classes = [IsAuthenticated, MyPermission]from .models import Distributor
from .serializer import DistributorSerializerclass DistributorView(ModelViewSet):queryset = Distributor.objects.all()serializer_class = DistributorSerializerpagination_class = MyPageNumberPaginationauthentication_classes = [JSONWebTokenAuthentication]permission_classes = [IsAuthenticated, MyPermission]

urls.py路由中


from django.contrib import admin
from django.urls import path, includefrom rest_framework_jwt.views import obtain_jwt_tokenfrom rest_framework.routers import SimpleRouterfrom app01.views import UserView, AdminView, CarModelView, CarFactoryView, DistributorViewrouter = SimpleRouter()router.register('user', UserView, 'user')
router.register('admin', AdminView, 'admin')router.register('carMode', CarModelView, 'carMode')
router.register('carFactory', CarFactoryView, 'carFactory')
router.register('distributor', DistributorView, 'distributor')urlpatterns = [path('login/', obtain_jwt_token),path('', include(router.urls))
]
http://www.risenshineclean.com/news/32433.html

相關(guān)文章:

  • 電商型企業(yè)網(wǎng)站建設(shè)品牌型網(wǎng)站制作價格
  • 企業(yè)內(nèi)部網(wǎng)站如何建設(shè)吉林網(wǎng)絡(luò)seo
  • 流量劫持網(wǎng)站怎么做磁力搜索引擎不死鳥
  • 公司官網(wǎng)怎么建立優(yōu)化大師客服電話
  • php網(wǎng)站的登陸注冊怎末做的深圳網(wǎng)站建設(shè)專業(yè)樂云seo
  • 業(yè)余從事網(wǎng)站開發(fā)杭州seo按天計費
  • 招聘網(wǎng)站建設(shè)維護(hù)人員設(shè)計公司排名前十強(qiáng)
  • 錦州網(wǎng)站建設(shè)哪家好seo策略有哪些
  • 金山建設(shè)機(jī)械網(wǎng)站seo研究中心超逸seo
  • 網(wǎng)站備案后更換主機(jī)網(wǎng)絡(luò)營銷的內(nèi)涵
  • php做視頻網(wǎng)站有哪些軟件下載谷歌優(yōu)化的網(wǎng)絡(luò)公司
  • 廣告行業(yè)包括網(wǎng)站建設(shè)嗎搜索seo優(yōu)化
  • 表格上傳網(wǎng)站廣東seo點擊排名軟件哪家好
  • 獵頭做mapping網(wǎng)站推廣軟件的app
  • 溫州網(wǎng)站建設(shè)推廣nba哈登最新消息
  • 完善酒店網(wǎng)站建設(shè)線上推廣策劃方案
  • 大興網(wǎng)站建設(shè)推廣網(wǎng)站seo的方法
  • 做團(tuán)建活動網(wǎng)站網(wǎng)站優(yōu)化什么意思
  • 規(guī)模以上工業(yè)企業(yè)名單百度小程序關(guān)鍵詞優(yōu)化
  • 建設(shè)銀行網(wǎng)站不能登錄密碼seo文章是什么
  • 東莞建站模板后臺百度快照功能
  • php網(wǎng)站后臺反應(yīng)慢怎么解決推廣網(wǎng)頁怎么做的
  • 上海網(wǎng)站制作培訓(xùn)分享推廣
  • 浙江網(wǎng)緣科技有限公司seo點擊排名
  • 用uc看不健康的東西會中病毒嗎seo的中文是什么
  • 廣西專業(yè)做網(wǎng)站的公司磁力搜索引擎
  • 蘭州網(wǎng)站建設(shè)模板google全球推廣
  • 阿里云可以做網(wǎng)站域名備案查詢站長工具
  • 天元建設(shè)集團(tuán)有限公司怎么樣鎮(zhèn)江優(yōu)化推廣
  • 凡科網(wǎng)站教程免費檢測網(wǎng)站seo