新增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
沒有留言:
張貼留言