【Django】Django 的员工信息系统

目录

一、登录验证

三、增删改数据

四、登录检测和拦截

五、总结


码云地址在文末,blog:https://fabian4.gitee.io/47578.html

功能实现:

  • 登录权限验证
  • 登录状态检测
  • 员工信息分页查询显示
  • 多条件联合查询
  • 增删改数据


一、登录验证


1. 创建管理员模型和用户模型

# user\models.py
from django.db import models


class User(models.Model):
    """用户类"""

    id = models.AutoField(primary_key=True, db_column='id', verbose_name='编号')
    name = models.CharField(max_length=20, db_column='name', verbose_name='名字')
    gender = models.CharField(max_length=20, db_column='gender', verbose_name='性别')
    age = models.CharField(max_length=20, db_column='age', verbose_name='年龄')
    address = models.CharField(max_length=20, db_column='address', verbose_name='籍贯')
    qq = models.CharField(max_length=20, db_column='qq', verbose_name='QQ')
    email = models.CharField(max_length=20, db_column='email', verbose_name='邮箱')

    class Meta:
        db_table = 'user'


class Admin(models.Model):
    """管理员"""

    id = models.AutoField(primary_key=True, db_column='id', verbose_name='编号')
    username = models.CharField(max_length=20, db_column='username', verbose_name='用户名')
    password = models.CharField(max_length=20, db_column='password', verbose_name='密码')

    class Meta:
        db_table = 'manager'


2. 配置MySQL数据库


参考上一篇博客

https://blog.csdn.net/bandaoyu/article/details/105968112

3. 迁移数据模型


# 迁移 Django 内置的管理数据表
(venv)$ python manage.py migrate
# 生成我们的数据迁移文件
(venv)$ python manage.py makemigrations user
# 迁移我们的数据表
(venv)$ python manage.py migrate
3. 映射 URL

# UserSystem\urls.py
urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('user.urls')),
]

# user\urls.py
urlpatterns = [
    # 登录的url
    path('login/', views.login, name='login'),
    # 获取图片验证码
    path('get_captcha/', views.get_captcha, name='get_captcha'),
]


4. 配置全局静态文件

# UserSystem\settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]


5. 配置全局默认基本 url

# user\context_processors.py
from UserSystem import settings

def base_url(request):
    if settings.DEBUG:
        return {'BASE_URL': 'http://localhost:8000/'}

# 注册到 UserSystem\settings.py
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                # 注册我们自己配置的文件
                'user.context_processors.base_url'
            ],
        },
    },
]


6. 关闭 xss token

这是 Django 中为了避免存在跨站脚本攻击漏洞而对网页表单的强制要求,我们在开发过程中可以先将这个模块注释掉MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 注释 网页表单验证组件
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]


7. 编写前端页面

<!-- templates\login.html -->
<div class="container" style="width: 400px;">
          <h3 style="text-align: center;">管理员登录</h3>
        <form action="/login/" method="post">
          <div class="form-group">
            <label for="username">用户名:</label>
            <input type="text" name="username" class="form-control" id="username" placeholder="请输入用户名"/>
          </div>
          
          <div class="form-group">
            <label for="password">密码:</label>
            <input type="password" name="password" class="form-control" id="password" placeholder="请输入密码"/>
          </div>
          
          <div class="form-inline">
            <label for="vcode">验证码:</label>
            <input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="请输入验证码" style="width: 120px;"/>
            <a href="javascript:refreshCode()">
                <img src="{
   {pageContext.request.contextPath}}/get_captcha/" title="看不清点击刷新" id="vcode"/></a>
          </div>
          <hr/>
          <div class="form-group" style="text-align: center;">
            <input class="btn btn btn-primary" type="submit" value="登录">
           </div>
          </form>
        
        <!-- 出错显示的信息框 -->
        {% if request.session.error %}
        <div class="alert alert-warning alert-dismissible" role="alert">
            <button type="button" class="close" data-dismiss="alert" >
              <span>&times;</span></button>
            <strong>{
   {request.session.error}}</strong>
        </div>
        {% endif %}
    </div>


8. 编写验证码生成

# user\captcha.py
import os
import random

from io import BytesIO

from PIL import Image
from PIL import ImageFilter
from PIL.ImageDraw import Draw
from PIL.ImageFont import truetype

from UserSystem.settings import BASE_DIR


class Bezier(object):
    """贝塞尔曲线"""

    def __init__(self):
        self.tsequence = tuple([t / 20.0 for t in range(21
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值