• 131-使用login_required(),以及将当前的操作内容绑定到登陆者


    【1】登录后的界面

    假设有个叫login_ok.html的页面,当成功注册和成功登录后,会跳转到这个页面。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
        {% if user.is_authenticated %}
            <p>hello,{{user.username}}</p>
            <p>login success,so,you can see the page!</p>
            <span><a href="{% url 'simplesite:add' %}">add student</a><a href="{% url 'account:logout' %}">logout</a></span>
        {% else %}
            <p>please login first:</p>
            <p><a href="{% url 'account:login' %}">login</a></p>
        {% endif %}
    
    </body>
    </html>
    

      

    这里先判断有没有user登录,如果有,则显示的登陆者信息,及相关操作的入口:添加学生(add student),注销(logout);

    如果没有登录的,则提示进行登录(login)。

    【2】假设登录后,录入一个学生信息,然后提交,最后可以看到所有的学生信息。

    @login_required
    def add_student(request):
        current_user = request.user
        if request.method == 'POST':
            form = StudentForm(request.POST)
            if form.is_valid():
                new_student_info = form.save(commit=False)
                new_student_info.user = current_user
                new_student_info.master = current_user.username
                new_student_info.save()
                return HttpResponseRedirect(reverse('simplesite:info'))
    
    
        else:
            form = StudentForm
            context = {'form': form}
            return render(request, 'add_student.html', context)
    
    @login_required
    def show_student_info(request):
        all_student = StudentInfo.objects.order_by('-add_time')
        context = {'all_student':all_student} 

      return render(request, 'student_info.html', context)

      

    在录入学生信息时,通过:current_user = request.user获取当前的登录用户,我们假定这个身份就是班主任。

    然后根据之前定义的学生关系,让学生和这个班主任建立联系,并将学生的master属性,设置为当前user的username。然后进行存储,并跳转到显示学生信息的页面。

    在录入学生和查看学生信息的views函数前,都使用了@login_required装饰器,这是django已经为我们写好的轮子,直接拿来使用,然后配置一下你所设置的登录url即可。

    在setting.py里添加一条:LOGIN_URL = '/ac/login'即可。

     
  • 相关阅读:
    MOSS的CSS样式说明
    RSS 简介(一)
    母版页详细分析
    导出 WINDOWS\assembly中DLL文件
    文件下载代码
    列表Field属性的巧妙运用(隐藏栏)
    javascript弹出窗口总结
    转[VBA起步]常用的、带解释的 VBA 短句
    如何生成自定义列表
    mysql 连接字符串与SQL不同
  • 原文地址:https://www.cnblogs.com/lzhshn/p/13585842.html
Copyright © 2020-2023  润新知