栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

19. 项目实战之移动端会员登陆与退出

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

19. 项目实战之移动端会员登陆与退出

  • 本节完成移动端会员登录/注册和退出操作,。

 

(1). 编辑视图文件index.py (2). 配置登录退出url路由 (3). 在中间件中添加移动端登录过滤 (4). 套用登录模板文件

=========================================================================

(1). 在中间件中添加移动端点餐登录过滤
  • 打开中间件文件:myadmin/shopmiddleware.py 的__call__(self, request)方法中添加代码如下
    ....
    
             # 判断移动端是否登录
            # 定义移动端不用登录也可访问的路由url
            urllist = ['/mobile/register', '/mobile/doregister']
            # 判断当前请求url是否是以/mobile开头,并且path不在urllist中
            if re.match(r"^/mobile", path) and (path not in urllist):
                # 判断当是否登录(在于session中有没有mobileuser)
                if "mobileuser" not in request.session:
                    # 执行登录界面跳转
                    return redirect(reverse('mobile_register'))
    ......
    (2). 编辑视图文件
  • 在数据库 osdb 中已存在数据表member,并且内有测试数据。

  • 在common应用目录中的myobject/myadmin/models.py 模型文件中,已存在Member模型类的定义。

  • 打开视图文件:myobject/mobile/views/index.py 视图文件,并进行编辑

    from django.shortcuts import render
    from django.http import HttpResponse
    from django.shortcuts import redirect
    from django.urls import reverse
    from datetime import datetime
    from myadmin.models import Member
    
    # Create your views here.
    def index(request):
        '''移动端首页'''
        return render(request,"mobile/index.html")
    
    def register(request):
        '''加载注册/登录页面'''
        return render(request,"mobile/register.html")
    
    def doRegister(request):
        '''执行注册/登录'''
        #获取验证码(现在没有接入短信,所以就先模拟短信验证)
        verifycode = '1234' #request.session['verifycode']
        if verifycode != request.POST['code']:
            context = {'info':'验证码错误'}
            return render(request,'mobile/register.html',context)
        try:
            #根据手机号获取当前会员信息
            member = Member.objects.get(mobile=request.POST['mobile'])
        except Exception as err:
            print(err)
            #此处执行当前会员注册
            ob = Member()
            ob = Member()
            ob.nickname = "顾客"  # 默认会员名称
            ob.avatar = "moren.png"  # 默认头像
            ob.mobile = request.POST['mobile']  # 手机号码
            ob.status = 1
            # ob.create_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            # ob.update_at = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
            ob.save()
            member = ob
            # context = {'info':'此账户信息不存在!'}
            # return render(request,'mobile/register.html',context)
        # 检验当前会员状态
        if member.status == 1:  # 1代表正常用户
            # 将当前会员信息转成字典格式并存放到session中
            request.session['mobileuser'] = member.toDict()
            # 重定向到登录页
            return redirect(reverse('mobile_index'))
        else:
            context = {'info': '此账户信息禁用!'}
            return render(request, 'mobile/register.html')
    
    
    def shop(request):
        ''' 呈现店铺选择页面 '''
        return render(request,"mobile/shop.html")
    
    def selectShop(request):
        ''' 执行店铺选择 '''
        # 选择好店铺后会跳转到移动端首页
        pass
    
    def addOrders(request):
        ''' 加载准备下订单页,由会员确认 '''
        del request.session['mobileuser']
        return redirect(reverse('mobile_register'))

  • 打开视图文件:myobject/mobile/views/member.py 视图文件,并进行编辑
  • from django.shortcuts import render
    from django.http import HttpResponse
    from django.shortcuts import redirect
    from django.urls import reverse
    
    # 移动端个人中心
    
    def index(request):
        '''个人中心首页'''
        return render(request,"mobile/member.html")
    
    def orders(request):
        '''浏览会员订单'''
        return render(request,"mobile/member_orders.html")
    
    def detail(request):
        '''浏览会员订单详情'''
        return render(request,"mobile/member_detail.html")
    
    def logout(request):
        '''执行会员退出'''
        del request.session['mobileuser']
        return redirect(reverse('mobile_register'))

(3). 项目urls路由信息配置
  • 打开根路由文件:myobject/mobile/urls.py路由文件,编辑路由配置信息
from django.urls import path

from mobile.views import index
from mobile.views import member

urlpatterns = [
    path('', index.index, name="mobile_index"), #移动首页

     # 移动端会员注册/登录路由
    path('register', index.register, name="mobile_register"),
    path('doregister', index.doregister, name="mobile_doregister"),

    # ... ...

    # 会员中心
    path('member/logout', member.logout, name="mobile_member_logout"), #会员退出

    # ... ...
]

 

(4). 编写登录模板文件
  • 编辑项目移动端 "登录/注册" 页模板:/templates/web/login.html
  • {% extends 'mobile/base.html' %}
    {% load static %}
    
    {% block mainbody %}
    
    
    
    登录
    {% csrf_token %}
    测试验证码:1234 {{info}} {% endblock %} {% block myjavascript %} {% endblock %}

    这里登录用的是表单提交,post方法

  • 编辑项目移动端 "会员中心" 页模板:/templates/web/member.html
  • {% extends 'mobile/base.html' %}
    {% load static %}
    
    {% block mainbody %}
    
    
    
    
    	
    		
    		

       

    •   {{request.session.mobileuser.mobile}}
    • 我的订单
    • 我的资料
    • 修改密码
    • 优惠券
    • 收货地址
    • 退出
    • {% endblock %}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008802.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号