iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 22
1
Modern Web

🍐放學後的網頁開發系列 第 22

[Day22] 柚子放學後的網頁生活 - Log in / out

完成了註冊,那下一步呢 ?

今日目標 - 登入 / 登出

我們先從登出開始,因為比較簡單 (誤
那流程大致上都是一樣的
再幫大家提醒一下

  1. 先去HTML把form裡面資訊完成
  2. 到url.py給位址、準備view的function
  3. 去view把要做的事完成
  4. 測試 / debug

Log out

先設計 logout form 的HTML
這次記得要餵 csrf 的 token

<form method="POST" action="/logout/post">
<li><a class="auth"><button class="btn btn-primary">LogOut</button></li>
{% csrf_token %}
</form>

接著設定 url

from classes.views import hello_world, index, get_signup, post_signup, post_logout
url(r'^logout/post',post_logout)

再來是view
django原本就有logout函式可以直接用,傳request
logout完看你要去哪個頁面,我們這邊讓他回index首頁

#view.py

def post_logout(request):
    auth.logout(request)
    return redirect('/index')

補:如果跳出不認識redirect,請記得import

from django.shortcuts import render, redirect

接著就可以測試看看囉!
( 可以先從 admin 登入,再用 HTML 的 logout button log out)

成功 Log out 後,接下來寫 Log in ...

Log in

一樣設計 login form 的 HTML
也要記得 CSRF 的 token

<form method="POST" action="/login/post" class="form-inline my-2 my-lg-0">
    <input class="form-control mr-sm-2" type="text" name="email" placeholder="Email" >
    <input class="form-control mr-sm-2" type="password" name="password" placeholder="Password" >
    <button class="btn btn-success" type="submit">Sign in</button>&nbsp
    <a href="/signup"><button class="btn btn-primary" type="button">Register</button></a>
    {% csrf_token %}
</form>

目前的 urlpatterns 全部內容為:


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^hellonuts/$', hello_world),
    url(r'^index/',index),
    url(r'^signup$',get_signup),
    url(r'^signup/post',post_signup),
    url(r'^login/post',post_login),    ##新增這筆
    url(r'^logout/post',post_logout)
]

最後是 view 的設定
我們要傳email跟password做比對,authenticate傳回user檢查

  • is not None - 非none即是有此帳密,login並redirect回首頁
  • else ( is None ) - 無此帳密,直接redirect,如果想做其他的remind也可以哦!
def post_login(request):
    email = request.POST['email']
    password = request.POST['password']

    user = authenticate(email=email,password=password)

    if user is not None:
        auth.login(request, user)
        return redirect('/index',locals())
    else: #帳密錯
        return redirect('/index',locals())

寫完後,就可以來測試整個會員的流程

  1. Sign up
  2. Sign in
  3. Sign out

希望大家都可以順利,會員系統以後就能快速開發囉 !

下課囉 ~ 請鎖定 柚子放學後的網頁生活


上一篇
[Day21] 柚子放學後的網頁生活 - Django Register
下一篇
[Day23] 柚子放學後的網頁生活 - Django 前後端分離
系列文
🍐放學後的網頁開發30

尚未有邦友留言

立即登入留言