Python學習第153天(Django之xadmin)
什麼是xadmin:
網上有很多定義和解釋,基本上都讓不瞭解xadmin的人看完了更迷糊!既然是解釋,就要讓讀者能一下子明白嘛!
xadmin在python的領域就相當於php領域的dz論壇和WordPress的高度可定製版後臺!
更通俗點講,xadmin就像是你的qq空間,但是比qq空間的可定製化高一千倍,能夠方便的管理你的各種資料(類比於你qq空間中的日誌、說說、簽名、照片……)
1.django2下安裝xadmin
1.xadmin的django2下載地址:https://github.com/sshwsfc/xadmin/tree/django2
2.開啟地址→確認下載的是django2的,點選Clone or download→點選Download ZIP→選擇下載到一個沒有中文的目錄下→點選下載
3.開啟Terminal執行安裝命令:
pip install --cache-dir pip install d:/xadmin-django2.zip
4.安裝一些必要的庫檔案:
pip crispy_forms pip reversion
5.開啟settings.py 找到INSTALLED_APPS 追加:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'yanzheng.apps.YanzhengConfig', #追加程式碼: 'xadmin', 'crispy_forms', 'reversion', ]
6.給urls.py中增加兩行程式碼,就算是給xadmin配置路由了:
from django.contrib import admin from django.urls import path #引入xadmin import xadmin urlpatterns = [ path('admin/', admin.site.urls), #配置xadmin路由 path('xadmin/', xadmin.site.urls), ]
7.安裝配置好了,不要忘了更新資料庫,開啟Terminal,執行經典的兩條命令:
python manage.py makemigrations python manage.py migrate
8.重新執行專案,瀏覽器訪問http://127.0.0.1:8000/xadmin/ 即可看到xadmin的登入介面(上次登入admin的時候如果沒登出登出,因為cookie的緣故,會直接出現已經登入的介面。)
2.django2下配置xadmin
1.至此成功登入了,但是由於後面還要自定義一些xadmin的外掛(比如一鍵匯出生成的卡密外掛),所以要將xadmin匯入專案中:
1.在專案netauth目錄下,新建apps和extra_apps,將yanzheng拖入apps目錄下。
2.在d盤目錄下找到下載的xadmin-django2.zip,右鍵解壓檔案→確定,解壓後的資料夾中,找到xadmin-django2/xadmin-django2目錄下的xadmin資料夾,複製到專案中extra_apps目錄下,注意Search for reference 和Open moved files in editer 都不要勾選!
3.extra_apps右鍵→Mark Directory as→Sources Root(對apps目錄也要做同樣的事)
4.在settings.py 中,找到:BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))),import sys 新增補全程式碼為:
import os,sys # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0,os.path.join(BASE_DIR,'apps')) sys.path.insert(1,os.path.join(BASE_DIR,'extra_apps'))
.5.開啟Terminal終端,解除安裝最先安裝的xadmin
pip uninstall xadmin y
不要覺得先安裝,又匯入,又解除安裝,這個過程有什麼可以省略的,一步也不能少,不然掉到坑裡,爬不上來哦。
資料庫開發
1.在apps/yanzheng/models.py中,將網路驗證相關的表建完(其實就倆表,還都很簡單):
from django.db import models from django.contrib.auth.models import AbstractUser from datetime import datetime # Create your models here. class UserProfile(AbstractUser): is_ban=models.BooleanField(default=False,verbose_name='是否被禁') end_time=models.DateTimeField(default=datetime.now, verbose_name='到期時間') class Meta: verbose_name='使用者資訊' verbose_name_plural=verbose_name def __str__(self): return self.username class Cards(models.Model): """充值卡""" user=models.ForeignKey(UserProfile,verbose_name='使用者',on_delete=models.CASCADE) kacode=models.CharField(max_length=50,verbose_name='卡密',default='') time=models.IntegerField(default=3600,verbose_name='時長') is_used=models.BooleanField(default=False,verbose_name='是否已經使用') add_time=models.DateTimeField(default=datetime.now,verbose_name='生成時間') class Meta: verbose_name='卡密' verbose_name_plural=verbose_name def __str__(self): return self.kacode
開啟Terminal,執行資料更新命令:
python manage.py makemigrations python manage.py migrate
這裡有一個坑:
資料更新的時候,如果資料類中,有DateTimeField欄位,只能在第一次建立時,資料更新命令能成功,如果已經執行了資料更新命令,再修改DateTimeField欄位的預設值,就會時間格式不對的錯誤,很煩人!
解決辦法:將apps/yanzheng/makemigrations目錄下,除了__init__.py以外的檔案都刪掉,再執行資料更新命令,就可以了。
最近沒有什麼系統性的知識,很多碎片,所以明天應該根據所寫的專案進行一下簡單的總結。