基于Django+mysql的点餐系统设计第十篇(H5手机移动端点餐:登录)

博客目录:

......

七、基于Django+mysql的点餐系统设计-第七篇(编写后台会员管理页面及后台系统技术点总结)

八、基于Django+mysql的点餐系统设计-第八篇(H5手机移动端点餐:主页调试-静态页面)

九、第九篇(H5手机移动端点餐:"主页调试-动态页面"和店铺切换)

十、基于Django+mysql的点餐系统设计第十篇(H5手机移动端点餐:登录)


本章源码下载地址:https://github.com/hopeSuceess/testorder/tree/testorder_20220602_01

  H5手机移动端点餐访问页面首先需要获取用户的信息,这里就引入了登录。手机号登录了,才能获取到用户信息,进行后续的订餐等操作。

在mobile/urls.py中添加登录路由:

    # 会员注册/登录
    path('register', index.register, name = "mobile_register"), #移动端会员注册/登录表单页

路由添加完后,开始编写views层,在mobile/views/index.py中添加对路由的处理逻辑

def register(request):
    '''加载注册/登录页面'''

    return render(request, "mobile/register.html")
register函数没有数据处理结果,只是将流程渲染到templates/mobile/register.html页面。register.html代码如下:
基于Django+mysql的点餐系统设计第十篇(H5手机移动端点餐:登录)

{% extends 'mobile/base.html' %}
{% load static %}

{% block mainbody %}

    

登录

{% csrf_token %}
测试验证码:1234 {{ info }}
{% endblock %} {% block myjavascript %} {% endblock %}

运行工程,访问 http://localhost:8000/mobile/register

基于Django+mysql的点餐系统设计第十篇(H5手机移动端点餐:登录)

把登陆页面写完后,继续执行登录的逻辑。在mobile/urls.py中添加执行登录路由

    path('doregister', index.doRegister, name= "mobile_doregister"), # 执行注册或登录

对于新用户,输入验证码即代表登录,所以需要将新用户的数据新增到数据库,然后再跳到餐品浏览页。另外,发送验证码需要调用第三方接口,这里就在缓存中固定一个验证码,登陆页面输入固定的验证码就可以了。mobile/views/index.py中doRegister编写如下:

def doRegister(request):
    '''执行注册/登录'''
    # 验证短信码
    verifycode = "1234" # request.session['verifycode']
    code = request.POST['code']
    if verifycode != code:
        context = {'info': '验证码错误'}
        return render(request, "mobile/register.html", context)

    try:
        #根据手机号码获取当前会员信息
        member = Member.objects.get(mobile=request.POST['mobile'])
    except Exception as err:
        # 此处可以执行当前会员注册(添加)
        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
    # 检查当前会员状态
    if member.status == 1:
        # 将当前会员信息转换成字典格式并存放到seession中
        request.session['mobileuser'] = member.toDict()
        # 重定向到首页
        return redirect(reverse("mobile_index"))
    else:
        context = {"info": '此账号信息禁用'}
        return render(request, "mobile/register.html", context)

最后,在templates/mobile/register.html中添加执行登录的路由


    
{% csrf_token %} ......
{% endblock %}
基于Django+mysql的点餐系统设计第十篇(H5手机移动端点餐:登录)

好了,访问http://localhost:8000/mobile/register,输入手机号、验证码,页面会跳到餐品浏览页

基于Django+mysql的点餐系统设计第十篇(H5手机移动端点餐:登录)

登录流程编写完了,是否发现一个问题,只有访问登陆链接(http://localhost:8000/mobile/register)才通过登录链接进入餐品浏览页,而且随意访问http://localhost:8000/mobile等链接都可以进入到对应的页面,这对于系统的安全是非常不利的。因此,移动端会员点餐也要像后台员工管理那样,增加登录校验。只要缓存中没有用户的信息,用户访问哪个链接都要跳转到登陆页面

  在myadmin/views/shopmiddleware.py中编写移动会员端是否登录的校验逻辑

基于Django+mysql的点餐系统设计第十篇(H5手机移动端点餐:登录)

 #判断H5移动会员端是否登录
        #定义移动端不登录也可以直接访问的url列表
        urllist1 = ['/mobile/register','/mobile/doregister']
        # 判断当前请求url地址是否是以/mobile开头,并且不在urllist中,才做是否登陆判断
        if re.match(r'^/mobile', path) and (path not in urllist1):
            # 判断是否登录(在于session中没有mobileuser)
            if 'mobileuser' not in request.session:
                # 重定向到登录页
                return redirect(reverse("mobile_register"))

是否登录逻辑编写完成后,清除缓存后,访问任意链接,如http://localhost:8000/mobile/ ,页面跳转到登陆页面。好了,移动端的登录就编写完了。下一篇文章开始编写移动端会员点餐的主要功能:购物车

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章