②. 后台管理员的登录与退出
(1). 配置路由(已配置过可省略)
- 配置路由
myobject/myadmin/urls.py
加入如下代码
....
# 后台管理员路由
url(r'^login$', index.login, name="myadmin_login"),
url(r'^dologin$', index.dologin, name="myadmin_dologin"),
url(r'^logout$', index.logout, name="myadmin_logout"),
....
(2). 编写视图文件
- 编写视图
myobject/myadmin/views/index.py
文件 并加入如下代码:
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
from django.core.urlresolvers import reverse
from common.models import Users
import time,json
...
# ==============后台管理员操作====================
# 会员登录表单
def login(request):
return render(request,'myadmin/login.html')
# 会员执行登录
def dologin(request):
try:
#根据账号获取登录者信息
user = Users.objects.get(username=request.POST['username'])
#判断当前用户是否是后台管理员用户
if user.state == 0:
# 验证密码
import hashlib
m = hashlib.md5()
m.update(bytes(request.POST['password'],encoding="utf8"))
if user.password == m.hexdigest():
# 此处登录成功,将当前登录信息放入到session中,并跳转页面
request.session['adminuser'] = user.name
#print(json.dumps(user))
return redirect(reverse('myadmin_index'))
else:
context = {'info':'登录密码错误!'}
else:
context = {'info':'此用户非后台管理用户!'}
except:
context = {'info':'登录账号错误!'}
return render(request,"myadmin/login.html",context)
# 会员退出
def logout(request):
# 清除登录的session信息
del request.session['adminuser']
# 跳转登录页面(url地址改变)
return redirect(reverse('myadmin_login'))
# 加载登录页面(url地址不变)
#return render(request,"myadmin/login.html")
...
3. 创建模板
- 创建登录模板文件:
templates/myadmin/login.html
代码如下:
{% load static from staticfiles %}
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="utf-8">
<title>Login - Akira</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="{% static 'myadmin/css/bootstrap.min.css' %}" rel="stylesheet">
<link href="{% static 'myadmin/css/bootstrap-responsive.min.css' %}" rel="stylesheet">
<link href="{% static 'myadmin/css/site.css' %}" rel="stylesheet">
<!--[if lt IE 9]><script src="{% static 'myadmin/js/html5.js' %}"></script><![endif]-->
</head>
<body>
<div id="login-page" class="container">
<h1>商城后台管理登录</h1>
<form id="login-form" method="post" class="well" action="{% url 'myadmin_dologin' %}">
{% csrf_token %}
账号:<input type="text" name="username" class="span2" placeholder="输入账号" /><br />
密码:<input type="password" name="password" class="span2" placeholder="输入密码" /><br />
<label class="checkbox"> <input type="checkbox" /> Remember me </label>
<button type="submit" class="btn btn-primary">登录</button>
<button type="reset" class="btn">重置</button>
</form>
<br/>
<span style="color:red">{{ info }}</span>
</div>
<script src="{% static 'myadmin/js/jquery.min.js' %}"></script>
<script src="{% static 'myadmin/js/bootstrap.min.js' %}"></script>
<script src="{% static 'myadmin/js/site.js' %}"></script>
</body>
</html>
修改模板文件:
templates/myadmin/base.html
代码如下:代码在页头处,62~70行左右
...
<ul class="nav pull-right">
<li>
<a href="profile.htm">@{{ request.session.adminuser }}</a>
</li>
<li>
<a href="{% url 'myadmin_logout' %}">退出</a>
</li>
</ul>
...