1. 程式人生 > 實用技巧 >Python學習第153天(Django之xadmin)

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以外的檔案都刪掉,再執行資料更新命令,就可以了。

最近沒有什麼系統性的知識,很多碎片,所以明天應該根據所寫的專案進行一下簡單的總結。