• django+xadmin在线教育平台慕学网(三)


    四、完成登录功能

    4.1、首页和登录页面的配置

    前端页面的初始文件,点此下载

    (1)把下载好的文件里面的index.html文件拷贝到template文件夹内

    (2)在根目录下新建static文件夹,用来存放静态文件,拷贝下载好的css、images、img、js、media到此文件夹下

      在settings.py中设置路径

    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )

    (3)替换文件路径,将index.html中../替换成/static/

    (4)配置url,在mxonline/ursl.py

    from django.views.generic import TemplateView
    
    url(r'^$', TemplateView.as_view(template_name='index.html'), name='index'),

    (5)登录页面

      将login.html 拷贝到template文件夹下面,替换文件路径,../替换成/static/

      配置login的url

    url(r'^login/$', TemplateView.as_view(template_name='login.html'), name='login'),

    (6)修改index.html的a标签,取消注释,更改跳转页面的地址

    <a style="color:white" class="fr loginbtn" href="/login/">登录</a>  

    4.2、用户登录

    (1)修改login的路由

    from users import views
    
    url(r'^login/$', views.user_login, name='login'),

    (2)在users/views.py书写login视图

    from django.contrib.auth import authenticate, login
    
    
    def user_login(request):
        if request.method == 'POST':
            # 获取用户提交的用户名和密码
            user_name = request.POST.get('username', None)
            pass_word = request.POST.get('password', None)
            # 成功返回user对象,失败None
            user = authenticate(username=user_name, password=pass_word)
            if user is not None:
                # 登录
                login(request, user)
                return render(request, 'index.html')
            else:
                return render(request, 'login.html', {'msg':'用户名或密码错误'})
        elif request.method == 'GET':
            return render(request, 'login.html') 

    (3)修改template/login.html

      如果用户登录错误,应该有提示错误信息

    <div class="error btns login-form-tips" id="jsLoginTips"></div>

    修改为下面 <div class="error btns login-form-tips" id="jsLoginTips">{{ msg }}</div>

        判断用户是否登录,加入已经登录,则显示用户姓名和图像及其个人中信息,如果没有登录,则显示登录和注册

     <header>
            <div  class=" header">
                 <div class="top">
                    <div class="wp">
                        <div class="fl"><p>服务电话:<b>33333333</b></p></div>
                           {% if request.user.is_authenticated %}
                            <div class="personal">
                                <dl class="user fr">
                                    <dd>bobby<img class="down fr" src="/static/images/top_down.png"/></dd>
                                    <dt><img width="20" height="20" src="/static/media/image/2016/12/default_big_14.png"/></dt>
                                </dl>
                                <div class="userdetail">
                                    <dl>
                                        <dt><img width="80" height="80" src="/static/media/image/2016/12/default_big_14.png"/></dt>
                                        <dd>
                                            <h2>django</h2>
                                            <p>bobby</p>
                                        </dd>
                                    </dl>
                                    <div class="btn">
                                        <a class="personcenter fl" href="usercenter-info.html">进入个人中心</a>
                                        <a class="fr" href="/logout/">退出</a>
                                    </div>
                                </div>
                            </div>
                            {% else %}
                            <!--登录后跳转-->
                            <a style="color:white" class="fr registerbtn" href="register.html">注册</a>
                            <a style="color:white" class="fr loginbtn" href="/login/">登录</a>
                            {% endif %}
    
    
    
                    </div>
                </div>
    
                <div class="middle">
                    <div class="wp">
                        <a href="index.html"><img class="fl" src="/static/images/logo.jpg"/></a>
                        <div class="searchbox fr">
                            <div class="selectContainer fl">
                                <span class="selectOption" id="jsSelectOption" data-value="course">
                                    公开课
                                </span>
                                <ul class="selectMenu" id="jsSelectMenu">
                                    <li data-value="course">公开课</li>
                                    <li data-value="org">课程机构</li>
                                    <li data-value="teacher">授课老师</li>
                                </ul>
                            </div>
                            <input id="search_keywords" class="fl" type="text" value="" placeholder="请输入搜索内容"/>
                            <img class="search_btn fr" id="jsSearchBtn" src="/static/images/search_btn.png"/>
                        </div>
                    </div>
                </div>
                
                
                <nav>
                    <div class="nav">
                        <div class="wp">
                            <ul>
                                <li class="active" ><a href="index.html">首页</a></li>
                                <li >
                                    <a href="course-list.html">
                                        公开课<img class="hot" src="/static/images/nav_hot.png">
                                    </a>
                                </li>
                                <li >
                                    <a href="teachers-list.html">授课教师</a>
                                </li>
                                <li ><a href="org-list.html">授课机构</a></li>
                            </ul>
                        </div>
                    </div>
                </nav>
                
                </div>
        </header>

  • 相关阅读:
    Linux:删除程序
    Linux:目录操作
    Linux:加载硬盘
    mysql:查询结果添加序列号
    mysql:结果集去重
    mysql:字符串转换为日期类型
    MVC:上传文件时限制文件类型
    WebApi:WebApi的Self Host模式
    WebApi:过滤器的种类
    几种知名开源富文本编辑器记录和对比(仅供参考)
  • 原文地址:https://www.cnblogs.com/Jiangchuanwei/p/9174312.html
Copyright © 2020-2023  润新知