django 發佈會簽到系統web開發

  引言

  最近學習了蟲師的發佈會簽到系統demo,結合本身所學django知識,對demo從新塑造了一下。也是爲了練練手,鞏固知識。如今就分享一下成果~css

  Django工做流

  學習django web開發,先來簡單瞭解一下django的工做機制,請看下圖:html

 

 

簡單說明:
用戶經過瀏覽器訪問:http://127.0.0.1:8000/index,首先運行的是urlpatterns程序,經過url路由找到對應的視圖函數views.py,視圖函數處理全部邏輯和數據,而且將用戶要的數據通過函數處理後經過index.html返回給瀏覽器前的用戶看。前端

 

  詳情流程

   從用戶經過瀏覽器訪問→函數處理→數據展現,整個造成一個閉關。web

  MVC是衆所周知的模式,即:將應用程序分解成三個組成部分:model(模型),view(視圖),和 controller(控制 器)。其中:數據庫

M——管理應用程序的狀態(一般存儲到數據庫中),並約束改變狀態的行爲(或者叫作「業務規則」)。

C——接受外部用戶的操做,根據操做訪問模型獲取數據,並調用「視圖」顯示這些數據。控制器是將「模型」和「視圖」隔離,併成爲兩者之間的聯繫紐帶。

V——負責把數據格式化後呈現給用戶。

  Django也是一個MVC框架。可是在Django中,控制器接受用戶輸入的部分由框架自行處理(C交給用戶),因此 Django 裏更關注的是模型(Model)、模板(Template)和視圖(Views),稱爲 MTV模式:django

 

M 表明模型(Model),即數據存取層。 該層處理與數據相關的全部事務: 如何存取、如何驗證有效性、包含哪些行爲以及數據之間的關係等。

T 表明模板(Template),即表現層。 該層處理與表現相關的決定: 如何在頁面或其餘類型文檔中進行顯示。

V 表明視圖(View),即業務邏輯層。 該層包含存取模型及調取恰當模板的相關邏輯。 你能夠把它看做模型與模板之間的橋樑。

  登陸

  後端代碼:
#登陸邏輯處理函數
def login_action(request):
    if request.method == "POST":
        username = request.POST.get('username','')
        password = request.POST.get('password','')
        remember = request.POST.get('remember','')
        print(remember,111)
        #if username == 'admin' and password == '123456':
        #django認證登陸
        user = auth.authenticate(username=username,password=password)
        # print("user:%s"%user)
        if user is not None:
            auth.login(request,user) #登錄
            #response.set_cookie('user',username,3600) #添加瀏覽器cookie
            request.session['user'] = username  #寫入session 寫入瀏覽器,存入服務器。
            response = HttpResponseRedirect('/home/')
            """
            重定向,先post→get經過路由urls,找到event_manager函數,跳轉到找到event_manager.html頁面。
            """
            # 判斷是否記住用戶名
            if remember == "on":
                # 設置cookie username *過時時間爲1周,按秒計算
                response.set_cookie('username', username, max_age=7 * 24 * 3600)
            return response

        else:
            # return render(request,'index.html',{'error':'username or password error!'})

            return redirect('/login/')

  

#登陸顯示頁面
def login(request):
    '''顯示登錄頁面'''
    # 獲取cookie username
    if 'username' in request.COOKIES:
        username = request.COOKIES['username']
    else:
        username = ''
    return render(request,'index.html',{'username': username})

  

  前端代碼
#首頁
<html>
<head>
    {% load bootstrap3 %}
    {% bootstrap_css %}
    <link rel="stylesheet" href="/static/css/style.css">
</head>

<body style="margin: 5%;">
<div class="container">
    <div class="form row">
        <div class="form-horizontal col-md-offset-3" id="login_form">
            <h3 class="form-title" style="padding-left: 20%"><font color="#fffaf0">歡迎登陸</font></h3>
            <div class="col-md-9">
                <form action="/login_action/" method="post">
                    <div class="form-group">

                        <i class="fa fa-user fa-lg"></i>
                        <input class="form-control required" type="text" value="{{ username }}" placeholder="Username"
                               id="username" name="username" autofocus="autofocus" maxlength="20"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-lock fa-lg"></i>
                        <input class="form-control required" type="password" placeholder="Password" id="password"
                               name="password" maxlength="8"/>
                    </div>
                    <div class="form-group">
                        <label class="checkbox">
                            {#                            <input type="checkbox" name="remember" value="1"/>記住我#}
                            <input type="checkbox" name="remember"/>記住我

                        </label>
                        <p>{{ back_dict }}</p>
                    </div>
                    <div class="form-group col-md-offset-9">
                        <button type="submit" class="btn btn-success pull-right" name="submit">登陸</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>

</body>

</html>
  效果以下

 

 

 

  首頁

  後端代碼
#主頁
def home(request):
    return render(request,'home.html')

 

  效果以下

 

 

 

  發佈會頁面

 

 

 

  嘉賓頁面

 

 

  總結

  因爲自身工做繁忙,後端代碼比較多點,不一一整理出來,如需學習,獲取源碼方式:加下面圖中的QQ羣,或關注csdn博客:https://blog.csdn.net/liudinglong1989bootstrap

相關文章
相關標籤/搜索