zoukankan      html  css  js  c++  java
  • Django:文章详情页面评论功能需要登录后才能使用,登录后自动返回到文章详情页

    背景:

      文章详情页正在查看文章,想评论一下写的不错,但是需要先登录才能。页面长这个样子:

    方案:

      1、点击登录链接时,将该页面的URL传递到登录视图中

        request.path获取的是当前页面的相对路径

    <a href="{% url 'account:user_login' %}?cur_url={{ request.path }}">登录</a>后回复

      登录时的URL如下图,会带上之前页面的相对url

      2、在登录视图中获取该cur_url的值,等待登录成功后跳转

    def user_login(request):
        # 定义为全局变量,post登录请求后依然可以使用该变量进行跳转
        global cur_url
        if request.method == 'GET':
            # 获取从url传递来的登录前的url
            cur_url = request.GET.get('cur_url')
            login_form = LoginForm()
            return render(request, "account/login2.html", {"form": login_form})
    
        if request.method == 'POST':
    
            #request.POST将前台数据传递给表单类,生成一个绑定实例
            login_form = LoginForm(request.POST)
            #如果数据合法则进行数据清洗,返回输入的数据(字典格式)
            if login_form.is_valid():
                cd = login_form.cleaned_data
                # 如果给定的凭据有效则返回一个User对象,否则返回None
                user = authenticate(username=cd['username'], password=cd['password'])
    
                if user:
                    #如果user不为None(既通过了凭据验证返回了user对象),使用系统自带的login方法登录
                    login(request, user)
                else:
                    error_msg = "账号与密码不匹配"
                    return render(request, 'account/login2.html', {'form': login_form, 'error_msg': error_msg})
            else:
                error_msg = '请输入合法数据'
                return render(request, 'account/login2.html', {'form': login_form, 'error_msg': error_msg})
    
    
            # 设置session信息
            request.session['is_login'] = True
            request.session['username'] = cd['username']
            #设置session有效期为?秒,不管操作不操作系统,10秒后都会自动失效
            # request.session.set_expiry(6000)
    
            # 校验成功后跳转至登录前的页面
            return redirect(cur_url)

      

  • 相关阅读:
    [bbk5102] 第38集 第四章 Flashback Database 02
    index
    [bbk5110] 第41集 第四章 Flashback Database 05
    支持向量机SVM基本问题
    凸优化小结
    博客基本操作
    感知机vs支持向量机
    PAYPAL商户集成指南-IPN&PDT变量列表
    一个IBM人的离职泪:伟大公司,SB老板,苦逼员工 (zz.IS2120.BG57IV3)
    Google Reader 7.1停止服务
  • 原文地址:https://www.cnblogs.com/gcgc/p/11039725.html
Copyright © 2011-2022 走看看