直接替換掉Django自帶的admin系統,並提供了不少有用的東西;徹底的可擴展的插件支持,基於Twitter Bootstrap的漂亮UI。python
xadmin下載: https://github.com/sshwsfc/xadmin/tree/django2(記得要直接下載zip)git
源碼集成:github下載源碼(必定要下載django2的文件名爲:xadmin-django2.zip,解壓后里面有個xadmin就是咱們須要的xadmin源碼了)github
項目的根目錄建立一個文件夾爲:extra_apps,將下載的好xadmin源碼拷貝到extra_apps目錄中以下:shell
經過pycharm 選中extra_apps文件夾點擊鼠標右鍵選中菜單mark directory as 選擇 sources root就能夠變成上面的藍色文件夾目錄就能夠了。數據庫
安裝依賴項:django
#pip install git+git://github.com/sshwsfc/xadmin.git@django2 依賴項: django-crispy-forms django-import-export django-reversion django-formtools future httplib2 six
settings.py配置json
# 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,'extra_apps')) sys.path.insert(0,os.path.join(BASE_DIR,'polls')) INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', ……
'polls', #應用app 'xadmin', 'crispy_forms', 'reversion', ]
urls.py配置app
from django.contrib import admin from django.urls import include, path import xadmin urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls),
path('xadmin/',xadmin.site.urls),
]
setting.py設置成中文ssh
LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = False
bug修改ide
TypeError at /xadmin/xadmin/userwidget/add/ render() got an unexpected keyword argument 'renderer'錯誤 修改項目中xadmin/views/dashborad.py中的render(),在render()中添加參數:renderer=None,便可解決。
運行項目
先執行python manage.py makemigrations 而後執行python manage.py migrate 生成數據庫
執行 python manage.py runserver (若是缺乏庫的話自行安裝相應的庫就能夠了),
當訪問後臺的時候能夠看到以下效果說明成功了
中文板式:
python manage.py createsuperuser
python manage.py shell from django.contrib.auth.models import User #引入管理員密碼存放的數據庫 user=User.objects.filter() #查找該數據庫裏有哪些用戶 user 輸出user 能夠看到用戶名,我這裏只有一個admin [<User: admin>] 重置密碼, user = User.objects.get(username='admin') #獲取名稱爲admin的用戶 user.set_password('123456') #設置密碼 user.save() # 保存user對象
xadmin後臺若是要對錶的內容增刪改查,跟以前的admin.py文件裏面寫註冊表信息同樣,需在admin.py同一級目錄新建一個adminx.py的文件。
而後在adminx.py文件控制頁面上需顯示的內容。
from django.utils import timezone import datetime class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text def was_published_recently(self): now = timezone.now() return now - datetime.timedelta(days=1) <= self.pub_date <= now class Choice(models.Model): question = models.ForeignKey(Question,on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) def __str__(self): return self.choice_text
在admin.py文件的同一目錄新建一個adminx.py(注意只能是adminx.py,不能叫其它的名稱)
在adminx.py裏與以前的admin.py代碼有一些不同
import xadmin from .models import Question, Choice class MoreInfo(object): model = Choice class ControlQuestion(object): # 顯示的字段 list_display = ('question_text', 'pub_date') # 搜索條件 search_fields = ('question_text',) # 每頁顯示10條 list_per_page = 10 # 在Question頁面顯示更多信息Choice inlines = [MoreInfo] class ControlChoice(object): list_display = ["question", "choice_text"] # 註冊Question表 xadmin.site.register(Question, ControlQuestion) xadmin.site.register(Choice, ControlChoice)