2017年11月7日 星期二

Django - Login筆記

新增 LOGIN_URL變數 於 settings.py
新增login template
設定login views
使用decorator
設定urls.py


1. 設定settings LOGIN_URL變數
LOGIN_URL = '/basicapp/user_login'


2. 新增login template
<h1>Login</h1>

<form method="post" action="{% url 'basicapp:user_login' %}" >
{% csrf_token %}
<label for="username">Username:</label>
<input type="text" name="username" placeholder="Enter username...">
<label for="password">Password:</label>
<input type="password" name="password" placeholder="Enter password...">
<input type="submit" name="" value="Login">
</form>


3. 設定views.py

from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required

def user_login(request):

if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')

user = authenticate(username=username, password=password)

if user:
if user.is_active :
login(request, user)
return HttpResponseRedirect(reverse('index'))
else:
return HttpResponse('Account not active')
else:
print('Someone tried to login and failed')
print('Username: {} and password {}'.format(username,password))
return HttpResponse('invalid login details supply')

return render(request, 'basicapp/login.html')



@login_required
def user_logout(request):
logout(request)
return HttpResponseRedirect(reverse('index'))

@login_required
def special(request):
return HttpResponse('You are logged in!')

4. 設定urls.py

完成

判斷登入使用者

不可等入admin mode
is_authenticated

可登入admin mode
is_staff
is_superuser

沒有留言:

張貼留言