Django框架学习(6)admin登录认证

创建账户

首先用命令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 到浏览器,此时会自动跳转到登录页面
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/liying15/article/details/87533457
今日推荐