Django用例:使用中间件实现官网抢手机逻辑

    我们经常遇到在电商平台抢手机,会出现一机难求的局面。我们可以通过中间件来模拟这种情况,并引入用户等级来让优质用户更同意抢到新品手机。

1、先构建正常抢手机功能

urls.py

from django.conf.urls import url

from hellpaop import views

urlpatterns = [
    url(r'^buyPhone/',views.buyPhone)
]

views.py

import random

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
def buyPhone(request):

    r_num = random.randrange(100)

    if r_num >= 49:
        return HttpResponse('恭喜您,获得XXX手机 256G版本')
    else:
        return HttpResponse('抱歉,本平台已售完')

普通用户有50%的几率抢不到手机

2、自定义中间件

  • 在项目中创建middleware文件夹
  • 在文件夹中创建py文件并编写如下
class LearnAOP(MiddlewareMixin):
    def process_request(self,request):

        ip = request.META.get('REMOTE_ADDR')

        if request.path == '/helloAop/buyPhone/':

            if ip == '127.0.0.1':
                return HttpResponse('钻石用户,恭喜您获得XXX手机 256G版本')

假设以ip为标识,这里让本机ip作为钻石用户

  • 在settings中进行注册
MIDDLEWARE = [
    'middleware.myMiddleware.LearnAOP',
]

3、访问手机官网

在这里插入图片描述
100%可以买到手机!

发布了115 篇原创文章 · 获赞 4 · 访问量 4592

猜你喜欢

转载自blog.csdn.net/weixin_43999327/article/details/104303000