iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0
Modern Web

Django案例實作之踩坑全記錄系列 第 28

Django - 會員系統(三)

註冊系統完成後接下來就是登入的部分(延續上篇使用Django內建的會員系統)。

第一步:views.py

from django.contrib import auth

def post_login(request):
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['password']
        user = auth.authenticate(username=username, password=password)
        if user and user.is_staff is False:
            auth.login(request, user)
            return redirect('/login/')
        elif user and user.is_staff is True:
            auth.login(request, user)
            return redirect('/quiz/')
        else:
            return redirect('/login/')
    else:
        return render(request, 'registration/login.html', locals())
  • 另外加上的user.is_staff來判斷是否為管理者的部分。

第二步:template

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet"    href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
    <title>Login</title>
</head>
<body>
    {% csrf_token %}
    <div class="container">
        <h2>Log in</h2>
        <form method="post" class="form-inline my-2 my-lg-0">
            <input class="form-control mr-sm-2" type="text" 
                   name="username" placeholder="Username">
            <input class="form-control mr-sm-2" type="password" 
                   name="password" placeholder="Password">
            <button class="btn btn-success" type="submit">送出
            </button>&nbsp
            {% csrf_token %}
        </form>
    </div>
</body>
</html>
  • 這次用到Bootstrap,記得要在最上頭加上Bootstrap的link,這樣才會實現效果。

第三步:urls.py

urlpatterns = [
    ...
    path('login', views.login),
]

結果畫面如下:
https://ithelp.ithome.com.tw/upload/images/20200928/20129725WhSVZegK9u.png


上一篇
Django - 會員系統(二)
下一篇
Django - 會員系統(四)
系列文
Django案例實作之踩坑全記錄34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言