模塊二 第二週 作業一 登錄功能

1 問題描述

完成用戶登錄與登錄狀態顯示

需求:

  • 首頁

    • 未登錄狀態,顯示登錄按鈕

在這裏插入圖片描述

  • 已登錄的用戶,顯示"你好用戶名"

在這裏插入圖片描述

  • 登錄頁

    • 賬號與密碼正確,跳轉到首頁

在這裏插入圖片描述

  • 賬號與密碼不正確,在登錄頁面上提示“賬號和密碼錯誤”

在這裏插入圖片描述

2 解題提示

  1. 注意模板繼承
  2. 反向解析
  3. session的獲取

3 評分標準

  1. 用戶登錄後,可以保持登錄狀態 10分

  2. 登錄過程中,賬號或密碼錯誤,可以在登錄頁面輸出提示 10分

  3. 代碼註釋,規範10分

4 要點解析

  • 反向解析

在這裏插入圖片描述

5 實現步驟

  • 創建項目,配置app

在這裏插入圖片描述

  • 創建數據庫

在這裏插入圖片描述

  • 創建模型類

在這裏插入圖片描述

  • settings中配置數據庫連接

在這裏插入圖片描述

  • 遷移數據庫

在這裏插入圖片描述

  • 模板繼承

在這裏插入圖片描述

  • 主路由

在這裏插入圖片描述

  • 子路由

在這裏插入圖片描述

  • 視圖函數

在這裏插入圖片描述

  • 頁面
    • base
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
        <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script>
        <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
        <title>{% block title %}{% endblock %}</title>
    </head>
    <body>
    <!-- 導航欄 -->
    <nav class="navbar navbar-inverse" role="navigation">
        <div class="container-fluid">
            <div class="navbar-header">
                <a class="navbar-brand" href="{% url 'index' %}">首頁</a>
            </div>
            <div>
                <ul class="nav navbar-nav">
                    <li><a href="#">專欄1</a></li>
                    <li><a href="#">專欄2</a></li>
                    <li><a href="#">專欄3</a></li>
                    <li><a href="#">專欄4</a></li>
                </ul>
                <ul class="nav navbar-nav navbar-right">
                    <li>
                        {% if login_user %}
                            <!-- 如果用戶已登錄,顯示"你好:用戶名" -->
                            <a href="#"> 你好:{{ login_user.username }} </a>
                        {% else %}
                            <!-- 如果用戶未登錄 -->
                            <a href="{% url 'login' %}">登錄</a>
                        {% endif %}
                    </li>
                </ul>
            </div>
        </div>
    </nav>
    {% block article %} {% endblock %}
    </body>
    </html>
    
    • 首頁
    {% extends 'base.html' %}
    {% block title %}
        首頁
    {% endblock %}
    
    {% block article %}
        <!-- 省略首頁的主體內容 -->
        <div class="container">
            <h1>省略首頁展示的內容</h1>
        </div>
    {% endblock %}
    
    • 登錄頁
    {% extends 'base.html' %}
    {% block title %} 登錄 {% endblock %}
    {% block article %}
        <!-- 表單內容 -->
        <div class="col-sm-offset-4 col-sm-4" style="margin-top: 50px;">
            <form class="form-horizontal" role="form" action="{% url 'login' %}" method="post">
                {% csrf_token %}
                <!-- 如果賬號或密碼錯誤,輸出提示 -->
                {% if message %}
                    <h3 class="text-danger">{{ message }}</h3>
                {% endif %}
                <div class="form-group">
                    <label for="username" class="col-sm-2 control-label">用戶名</label>
                    <div class="col-sm-10">
                        <input type="text" class="form-control" id="username" placeholder="請輸入用戶名" name="username">
                    </div>
                </div>
                <div class="form-group">
                    <label for="password" class="col-sm-2 control-label">密碼</label>
                    <div class="col-sm-10">
                        <input type="password" class="form-control" id="password" placeholder="請輸入密碼" name="password">
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-sm-offset-2 col-sm-10">
                        <button type="submit" class="btn btn-default">登錄</button>
                    </div>
                </div>
            </form>
        </div>
    {% endblock %}
    
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章