zoukankan      html  css  js  c++  java
  • Django项目:堡垒机(Linux服务器主机管理系统)--01--01堡垒机重写DJANGO账户表

    python相关软件安装流程图解————————python安装——————python-3.7.1-amd64

     https://www.cnblogs.com/ujq3/p/10098166.html


    python相关软件安装流程图解————————pycharm安装——————pycharm-professional-2018.3.1

    https://www.cnblogs.com/ujq3/p/10098615.html


    注意,先安装 DJANGO


     


      1 #models.py
      2 #————————————————01堡垒机重写DJANGO账户表 开始————————————————
      3 from django.db import models  #模型
      4 from django.contrib.auth.models import BaseUserManager,AbstractBaseUser,PermissionsMixin#DJANGO账户继承重写
      5 
      6 #重写DJAGO账号表
      7 class UserProfileManager(BaseUserManager):
      8     def create_user(self, email, name, password=None):#创建并保存一个普通用户给定的邮箱地址,密码。
      9         if not email:
     10             raise ValueError('用户必须有一个电子邮箱地址')
     11         user = self.model(email=self.normalize_email(email),#验证邮箱格式
     12                           name=name,)#创建一条普通用户记录
     13         user.set_password(password)#对密码加密
     14         user.save(using=self._db)#从临时文件读取出来数据,进行保存。
     15         return user
     16 
     17     def create_superuser(self, email,name,password):#创建并保存一个超级用户给定的邮箱地址,密码。
     18         user = self.create_user(email,name=name,password=password)#创建一条超级用户记录
     19         user.is_admin = True#管理员
     20         user.save(using=self._db)#从临时文件读取出来数据,进行保存。
     21         return user
     22 
     23 #重写DJAGO账号表
     24 class UserProfile(AbstractBaseUser,PermissionsMixin):
     25     # ————#DJANGO账号必须要有的字段 开始————
     26     email = models.EmailField( max_length=255,unique=True,verbose_name='邮箱地址')
     27     name = models.CharField(max_length=32,verbose_name='昵称')
     28     is_active = models.BooleanField(default=True,verbose_name='是否启用')
     29     is_admin = models.BooleanField(default=False,verbose_name='管理员',help_text='指定用户是否可以登录管理网站并且拥有全部权限',)
     30     is_staff = models.BooleanField(default=True,verbose_name='员工状态',help_text='指定用户是否可以登录管理网站',)
     31     # ————#DJANGO账号必须要有的字段 结束————
     32     #————#创建用户记录 开始————
     33     objects = UserProfileManager()#创建用户记录,固定的变量名(objects)
     34     USERNAME_FIELD = 'email' #用于登录的字段
     35     REQUIRED_FIELDS = ['name']#必须填写
     36     # ————#创建用户记录 结束————
     37     # ————#DJANGO账号必须要有的方法 开始————
     38     def get_full_name(self):#用户确认的电子邮件地址
     39         return self.email
     40     def get_short_name(self):#用户确认的电子邮件地址
     41         return self.email
     42     # ————#DJANGO账号必须要有的方法 结束————
     43     def __str__(self):# __unicode__ on Python 2
     44         return self.email
     45     # ————#DJANGO账号权限 开始————
     46     def has_perm(self, perm, obj=None):#权限#用户有一个特定的许可吗?
     47         return True
     48     def has_module_perms(self, app_label):#用户有权限查看应用名称吗?
     49         return True
     50     # ————#DJANGO账号权限 结束————
     51     class Meta:
     52         verbose_name_plural='00账户'
     53 # ————自定制admin 开始————
     54 #到admin.py里给DJANGO账户注册显示 #E:堡垒机eyeFortressadmin.py
     55 # ————自定制admin 结束————
     56 # ————注册到配置文件 开始————
     57 #到配置文件里给DJANGO账户指定模型 #E:堡垒机eyeeyesettings.py
     58 #AUTH_USER_MODEL = 'web.UserProfile'
     59 # ————注册到配置文件 结束————
     60 #————————————————01堡垒机重写DJANGO账户表 结束————————————————
     61 
     62 """
     63 # ————————————————Django中使用中国时区和中文 开始————————————————
     64 到settings.py里修改#E:堡垒机eyeeyesettings.py
     65 LANGUAGE_CODE = 'zh-Hans'
     66 TIME_ZONE = 'Asia/Shanghai'
     67 如果需要全局配置默认时区和语言,可在django下的conf模块下的global_settings.py中进行配置
     68 所有可选的语言选项可通过python输入以下代码查看:
     69 from django.conf.locale import LANG_INFO
     70 {key: LANG_INFO[key]['name_local'] for key in LANG_INFO if 'name_local' in LANG_INFO[key]}
     71 # ————————时间扩展 开始———————— 
     72 USE_TZ = True
     73 当设置了 USE_TZ 为 True 时,Django 与其他系统或服务的交流将强制使用 UTC 时间。
     74 1.保证存储到数据库中的是 UTC 时间;
     75 2.在函数之间传递时间参数时,确保时间已经转换成 UTC 时间;
     76 # ——Django中跨时区 开始——
     77 一般不跨时区的应用,可以不使用时区,即在settings.py设置
     78 USE_TZ = False
     79 这样存储的时间就是无时区的时间。
     80 # ——Django中跨时区 结束——
     81 # ————————时间扩展 结束————————
     82 # ————————————————Django中使用中国时区和中文 结束————————————————
     83 # ————————————————Django数据库生成 开始————————————————
     84 运行 Terminal
     85 生成 数据表
     86 E:PY2CrazyEye>python manage.py makemigrations
     87 数据表 迁移
     88 E:PY2CrazyEye>python manage.py migrate
     89 # ————————————————Django数据库生成 结束————————————————
     90 # ————————————————重写Django账号表后的创建方法 开始————————————————
     91 E:PY2CrazyEye>python manage.py createsuperuser
     92 邮箱地址: admin@qq.com
     93 昵称: admin
     94 Password:           admin123456
     95 Password (again):   admin123456    
     96 Superuser created successfully.
     97 # ————————————————重写Django账号表后的创建方法 结束————————————————
     98 #启动 DJANGO 服务
     99 E:PY2CrazyEye>python manage.py runserver 127.0.0.1:8000
    100 """
    #models.py

     1 #admin.py
     2 #————————————————01堡垒机重写DJANGO账户表 开始————————————————
     3 #————————同目录下可以用 . 开始————————
     4 #from Fortress import models#数据库 #重写DJAGO账号表
     5 from . import models#数据库 #重写DJAGO账号表
     6 #————————同目录下可以用 . 结束————————
     7 from django import forms #django的字段验证
     8 from django.contrib.auth.admin import UserAdmin as BaseUserAdmin ##表单添加和更改用户实例
     9 from django.contrib.auth.forms import ReadOnlyPasswordHashField#只读密码散列字段
    10 from django.contrib import admin #注册类到admin
    11 #创建新用户
    12 class UserCreationForm(forms.ModelForm):
    13     password1 = forms.CharField(label='设置密码', widget=forms.PasswordInput)#密码
    14     password2 = forms.CharField(label='确认密码', widget=forms.PasswordInput)#确认密码
    15     class Meta:
    16         model = models.UserProfile
    17         fields = ['email', 'name']
    18     def clean_password2(self): #检查两个密码条目是否一样(匹配)
    19         password1 = self.cleaned_data.get("password1")
    20         password2 = self.cleaned_data.get("password2")
    21         if password1 and password2 and password1 != password2:
    22             raise forms.ValidationError("密码不匹配")
    23         return password2
    24     def save(self, commit=True): #保存密码(散列的格式提供)
    25         user = super(UserCreationForm, self).save(commit=False)
    26         user.set_password(self.cleaned_data["password1"])
    27         if commit:
    28             user.save()#保存
    29         return user
    30 # 修改用户密码
    31 class UserChangeForm(forms.ModelForm):
    32     password = ReadOnlyPasswordHashField(label="修改密码",
    33         help_text=("原始密码不存储,所以没有办法看到"
    34                     "这个用户的密码,但是你可以改变密码 "
    35                     "使用 <a href="../password/">修改密码</a>."))#哈值#只读密码散列字段
    36     class Meta:
    37         model = models.UserProfile
    38         fields = ['email', 'password', 'name', 'is_active', 'is_admin']
    39     def clean_password(self):#不管用户提供什么,返回初始值。
    40         return self.initial["password"]
    41 
    42 #表单添加和更改用户实例
    43 class UserProfileAdmin(BaseUserAdmin):
    44     form = UserChangeForm  #修改
    45     add_form = UserCreationForm#创建
    46     # 字段用于显示用户模型。
    47     # 这些覆盖定义UserAdmin固定在底座上
    48     # auth.User参考特定字段。
    49     list_display = ['email', 'name','is_staff', 'is_admin']#后台显示的字段
    50     list_filter = ['is_admin','is_staff']#后台过滤的字段
    51     fieldsets = (('账号密码', {'fields': ('email', 'password')}),
    52                  ('个人信息', {'fields': ('name',)}),
    53                  ('权限', {'fields': ('is_admin','is_staff','user_permissions','groups')}),)
    54     #添加账户时显示要填写的字段
    55     add_fieldsets = (('添加账户', {'classes': ('wide',),#wide(宽屏样式)
    56             'fields': ('email', 'name', 'password1', 'password2')}),)
    57     search_fields = ['email']#后台搜索的字段
    58     ordering = ['email']#后台排序的字段
    59     filter_horizontal =['user_permissions','groups',#必须覆盖的变量#后台复选框的字段
    60                         ]
    61 admin.site.register(models.UserProfile, UserProfileAdmin)#现在注册这个新UserProfileAdmin
    62 # ——可选——使用Django的内置权限 开始————
    63 #from django.contrib.auth.models import Group #权限组
    64 #admin.site.unregister(Group)#权限组#因为我们不使用Django的内置权限,
    65 # ——可选——使用Django的内置权限 结束————
    66 #————————————————01堡垒机重写DJANGO账户表 结束————————————————
    #admin.py

      1 #settings.py
      2 
      3 """
      4 Django settings for eye project.
      5 
      6 Generated by 'django-admin startproject' using Django 2.1.4.
      7 
      8 For more information on this file, see
      9 https://docs.djangoproject.com/en/2.1/topics/settings/
     10 
     11 For the full list of settings and their values, see
     12 https://docs.djangoproject.com/en/2.1/ref/settings/
     13 """
     14 
     15 import os
     16 
     17 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
     18 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
     19 
     20 
     21 # Quick-start development settings - unsuitable for production
     22 # See https://docs.djangoproject.com/en/2.1/howto/deployment/checklist/
     23 
     24 # SECURITY WARNING: keep the secret key used in production secret!
     25 SECRET_KEY = 'r35s$()7lli1hw-!6%llp0uu$!m!e#nnlxu+&!6$(g*6f0=@2#'
     26 
     27 # SECURITY WARNING: don't run with debug turned on in production!
     28 DEBUG = True
     29 
     30 ALLOWED_HOSTS = []
     31 
     32 
     33 # Application definition
     34 
     35 INSTALLED_APPS = [
     36     'django.contrib.admin',
     37     'django.contrib.auth',
     38     'django.contrib.contenttypes',
     39     'django.contrib.sessions',
     40     'django.contrib.messages',
     41     'django.contrib.staticfiles',
     42     'Fortress.apps.FortressConfig',
     43 ]
     44 
     45 MIDDLEWARE = [
     46     'django.middleware.security.SecurityMiddleware',
     47     'django.contrib.sessions.middleware.SessionMiddleware',
     48     'django.middleware.common.CommonMiddleware',
     49     'django.middleware.csrf.CsrfViewMiddleware',
     50     'django.contrib.auth.middleware.AuthenticationMiddleware',
     51     'django.contrib.messages.middleware.MessageMiddleware',
     52     'django.middleware.clickjacking.XFrameOptionsMiddleware',
     53 ]
     54 
     55 ROOT_URLCONF = 'eye.urls'
     56 
     57 TEMPLATES = [
     58     {
     59         'BACKEND': 'django.template.backends.django.DjangoTemplates',
     60         'DIRS': [os.path.join(BASE_DIR, 'templates')]
     61         ,
     62         'APP_DIRS': True,
     63         'OPTIONS': {
     64             'context_processors': [
     65                 'django.template.context_processors.debug',
     66                 'django.template.context_processors.request',
     67                 'django.contrib.auth.context_processors.auth',
     68                 'django.contrib.messages.context_processors.messages',
     69             ],
     70         },
     71     },
     72 ]
     73 
     74 WSGI_APPLICATION = 'eye.wsgi.application'
     75 
     76 
     77 # Database
     78 # https://docs.djangoproject.com/en/2.1/ref/settings/#databases
     79 
     80 DATABASES = {
     81     'default': {
     82         'ENGINE': 'django.db.backends.sqlite3',
     83         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
     84     }
     85 }
     86 
     87 
     88 # Password validation
     89 # https://docs.djangoproject.com/en/2.1/ref/settings/#auth-password-validators
     90 
     91 AUTH_PASSWORD_VALIDATORS = [
     92     {
     93         'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
     94     },
     95     {
     96         'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
     97     },
     98     {
     99         'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    100     },
    101     {
    102         'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    103     },
    104 ]
    105 
    106 
    107 # Internationalization
    108 # https://docs.djangoproject.com/en/2.1/topics/i18n/
    109 #————————————————01堡垒机重写DJANGO账户表 开始————————————————
    110 # ————Django中使用中国时区和中文 开始————
    111 #LANGUAGE_CODE = 'en-us'
    112 #TIME_ZONE = 'UTC'
    113 LANGUAGE_CODE = 'zh-Hans'
    114 TIME_ZONE = 'Asia/Shanghai'
    115 # ————Django中使用中国时区和中文 结束————
    116 #————————————————01堡垒机重写DJANGO账户表 结束————————————————
    117 USE_I18N = True
    118 
    119 USE_L10N = True
    120 #————————————————01堡垒机重写DJANGO账户表 开始————————————————
    121 # ————Django中跨时区 开始————
    122 # USE_TZ = True
    123 USE_TZ = False
    124 # ————Django中跨时区 结束————
    125 #————————————————01堡垒机重写DJANGO账户表 结束————————————————
    126 # Static files (CSS, JavaScript, Images)
    127 # https://docs.djangoproject.com/en/2.1/howto/static-files/
    128 
    129 STATIC_URL = '/static/'
    130 
    131 #————————————————01堡垒机重写DJANGO账户表 开始————————————————
    132 AUTH_USER_MODEL = 'Fortress.UserProfile'
    133 #————————————————01堡垒机重写DJANGO账户表 结束————————————————
    #settings.py


  • 相关阅读:
    卡片选项页面 JTabbedPane 的使用
    下拉列表 JComboBox 的使用
    单选按钮 JradioButton 和复选框 JcheckBox 的使用
    标签 JLable 类
    文本区 JTextArea 的使用
    密码框JPasswordField 的使用
    JHDU 2601 An easy problem (数学 )
    HDU 2554 N对数的排列问题 ( 数学 )
    LaTeX初识 新手入门 Texlive和Texmaker学习
    [leetcode-387-First Unique Character in a String]
  • 原文地址:https://www.cnblogs.com/ujq3/p/10106089.html
Copyright © 2011-2022 走看看