创建账户
首先用命令python3 manage.py createsuperuser创建一个超级管理员,我使用的是最简单的账号和密码都是admin。
(venv) tracydeMacBook-Air:inventoryManagementSystem tracy$ python3 manage.py createsuperuser
Username (leave blank to use 'tracy'): admin
Email address: [email protected]
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
创建完成以后运行项目,在浏览器输入http://127.0.0.1:8000/admin 打开Django的admin页面,用上面的账号和密码登录,登录成功进入下图说是页面表示创建账号成功。
编写登录页面
在自己的web应用中编写登录页面。使用form表单提交登录信息,接口请求方式是get,接口路径为login
<h2 style="padding: 25px;">欢迎使用存销管理系统</h2>
<form class="layui-form" action="login" method="get">
<div class="layui-form-item">
<label class="layui-form-label">用户名</label>
<div class="layui-input-block">
<input type="text" name="username" required lay-verify="required" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">密码框</label>
<div class="layui-input-inline">
<input type="password" name="password" required lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<div style="font-size: 15px;color: #dc62c7;column-width: auto">{{ error }}</div>
<button class="layui-btn" lay-submit lay-filter="formDemo">登录</button>
</div>
</div>
{% csrf_token %}
</form>
编写视图
def login(request):
username = request.GET.get('username')
password = request.GET.get('password')
user = auth.authenticate(username=username, password=password)
if user is not None:
auth.login(request, user) #登录
response = HttpResponseRedirect("type")
response.set_cookie('user', username, 3600) # 向浏览器添加cookie
return response
else:
return render(request, 'home.html', {'error': "用户名或者密码输入错误"})
配置url
urlpatterns = [
path('admin/', admin.site.urls),
path('home',views.home),#首页(登录页面)
path('login', views.login),
展示已经登录的用户名
在前端页面加入如下内容,获取网页cookie中的用户名{{ user }}展示在页面上
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item">
<a href="javascript:;">
<img src="http://t.cn/RCzsdCq" class="layui-nav-img">
{{ user }}
</a>
</li>
<li class="layui-nav-item"><a href="">退出登录</a></li>
</ul>
添加登录验证
导入login_required模块,给分类页面增加装饰器
from django.contrib.auth.decorators import login_required
@login_required
def type(request):
type_list = models.type.objects.all()
return render(request, "type.html", {'data': type_list})
配置登录url
添加装饰器之前在浏览器输入http://127.0.0.1:8000/type 可以直接访问页面
添加装饰器以后输入上面的网址,会提示404,网址默认加上路径/accounts/login/:http://127.0.0.1:8000/accounts/login/?next=/type
这个路径可以在settings文件中自行配置:
LOGIN_URL = "/login/" #登录验证路径
配置完成以后再进入页面,还是404,页面路径为:
http://127.0.0.1:8000/login/?next=/type
跳转登录页面
在url页面配置登录跳转
path('login/', views.home),
再输入http://127.0.0.1:8000/type 到浏览器,此时会自动跳转到登录页面