zoukankan      html  css  js  c++  java
  • 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'即可。

     
  • 相关阅读:
    【vue】------ 路由创建 ------ 【William】
    【vue】------------@vue/cli3.7.0创建项目+ts-------------【William】
    【svn】--------------svn介绍------------------【William】
    【vue】------浅谈vue------【William】
    node创建服务器
    vue项目搭建
    利用vw做rem适配(纯css)
    nodejs实现md5和SHA256加密
    Cookie、session、localStorage、sessionStorage的区别
    tpc三次握手与四次挥手
  • 原文地址:https://www.cnblogs.com/lzhshn/p/13585842.html
Copyright © 2011-2022 走看看