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>

原文地址:https://www.cnblogs.com/Jiangchuanwei/p/9174312.html