Django項目:堡壘機(Linux服務器主機管理系統)--01--01堡壘機重寫DJANGO帳戶表 python相關軟件安裝流程圖解————————python安裝——————python-3.7.

 

python相關軟件安裝流程圖解————————python安裝——————python-3.7.1-amd64

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

 


python相關軟件安裝流程圖解————————pycharm安裝——————pycharm-professional-2018.3.1

http://www.javashuo.com/article/p-dirognfd-ck.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:\堡壘機\eye\Fortress\admin.py
 55 # ————自定製admin 結束————
 56 # ————註冊到配置文件 開始————
 57 #到配置文件裏給DJANGO帳戶指定模型 #E:\堡壘機\eye\eye\settings.py
 58 #AUTH_USER_MODEL = 'web.UserProfile'
 59 # ————註冊到配置文件 結束————
 60 #————————————————01堡壘機重寫DJANGO帳戶表 結束————————————————
 61 
 62 """
 63 # ————————————————Django中使用中國時區和中文 開始————————————————
 64 到settings.py裏修改#E:\堡壘機\eye\eye\settings.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:\PY2\CrazyEye>python manage.py makemigrations
 87 數據表 遷移
 88 E:\PY2\CrazyEye>python manage.py migrate
 89 # ————————————————Django數據庫生成 結束————————————————
 90 # ————————————————重寫Django帳號表後的建立方法 開始————————————————
 91 E:\PY2\CrazyEye>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:\PY2\CrazyEye>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

 

 


 

 

 

 

 

 


 

 

 

相關文章
相關標籤/搜索