xadmin 自定義模板


自定義xadmin模板添加到后台頁面

將下載的xadmin放在我們的項目根目錄下面

在每個app里面添加一個adminx.py 文件

在xadmin文件里面進行操作

給你需要的表添加顯示在后台里面,編寫實例化類

list_display = ['','','']

seacher_fields = []

list_fieldter = []

ordering = []

exclude = []

readonly_fields = []

inlines = []

list_editable =[]   #針對字段里面出現choices選擇

refresh_times = [5,2]  #自動刷新后台管理頁面

 
        

 

后台外鍵設置關聯添加  (只能嵌套一層)(一個外鍵對應多個表,可以給多個表設置)

class LessonInline(object):

  model = Lesson

  extry = 0

class Course(object):

  inlines = [LessonInline,]

 

兩個管理器,管理同一個表

在models.py文件里面

class BannerCourse(object):

class Meta:
verbose_name_plural = verbose_name = u'課程'
  proxy = True #在數據庫里面不會生成新的數據表

在asminx.py 文件里面
copy管理同一個表的class ,然后在后面添加以下代碼:

  def queryset(self):
  qs = super(該類名, self).queryset()
  qs = qs.filter(需要管理的字段 = True)
  return qs

在管理同一個表的class ,然后在后面添加以下代碼:

  def queryset(self):
  qs = super(該類名, self).queryset()
  qs = qs.filter(需要管理的字段 = False)
  return qs


在models.py文件中
可以將自定義函數直接添加到顯示里面,修改其名字:該函數名.short_description = '名字'
可以將自定義函數添加頁面,添加html代碼,實現頁面跳轉
def go_to(self):
  from django.utils.safestring import mark_safe
  return mark_safe("<a href='http://www.baidu.com'>跳轉</a>")
  該函數名.short_description = '名字'
最后將函數名添加到adminx.py中
后台頁面自動修改數據


在adminx.py文件中,

'''實例'''
'''保存課程機構的時候統計課程機構偶的課程數'''
def save_models(self):
  obj = self.new_obj
  obj.save()
  if obj.course_org is not none:
    course_org = obj.course_org
    course_org.course_nums = Courses.objects.filter(course_org=course_org).count()
    course_org.save()


xadmin 插件開發
互文本編輯器,UEditor 在github上面搜索djangoueditor,經行安裝下載
插件官方文檔 網址:http://xadmin.readthedocs.io/en/docs-chinese/plugins.html#
安裝流程:
1. pip install DjangoUeditor
2.settings.py 中加入DjangoUeditor

3.在adminx.py文件里面,courseAdmin類里面加入
def save_models(self):
obj = self.new_obj
obj.save()
if obj.course_org is not None:
course_org = obj.course_org
course_org.course_nums = Courses.objects.filter(course_org=course_org).count()
course_org.save()
4.在models里面填入
from DjangoUeditor.models import UEdiitorField
修改該類中的字段內容
detail = UEditorField(verbose_name=u'課程詳情',width=600, height=300, imagePath="courser/ueditor/", filePath="courser/ueditor/", default='')



3.url(r'ueditor/',include('DjangoUeditor.urls'))
在經行這一步時,會報錯,需要修改源碼
修改DjangoUeditor\urls.py文件中的,
第4行  將from django.conf.urls import patterns, url 改為  from django.conf.urls import url, include
第10行 將

urlpatterns = patterns('',
    url(r'^controller/$',get_ueditor_controller)
)
改為:
urlpatterns = [
url(r'^controller/$',get_ueditor_controller),
]

在需要修改的app里面的models里面的需要添加ueditor的字段修改為以下字段
4.detai = UEditorField()

5.在\extra_apps\xadmin\plugins下,添加一個文件 ueditor.py
在文件里面填寫
# coding=utf-8
import xadmin
from django.db.models import TextField
from xadmin.views import BaseAdminPlugin,CreateAdminView,ModelFormAdminView,UpdateAdminView
from DjangoUeditor.models import UEditorField
from DjangoUeditor.widgets import UEditorWidget
from django.conf import settings


class XadminUEditorWidget(UEditorWidget):
def __init__(self,**kwargs):
self.ueditor_options=kwargs
self.Media.js = None
super(XadminUEditorWidget, self).__init__(kwargs)


class UeditorPlugin(BaseAdminPlugin):
def get_field_style(self,attrs,db_field,style,**kwargs):
if style == 'ueditor':
if isinstance(db_field,UEditorField):
widget = db_field.formfield().widget
param = {}
param.update(widget.ueditor_settings)
param.update(widget.attrs)
return {'widget':XadminUEditorWidget(**param)}
return attrs

def block_extrahead(selfself,context,nodes):
js = '<script type="text/javascript" src="%s"></script>' %(settings.STATIC_URL + "ueditor/ueditor.config.js")
js += '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.all.min.js")
nodes.append(js)

xadmin.site.register_plugin(UeditorPlugin,UpdateAdminView)
xadmin.site.register_plugin(UeditorPlugin,CreateAdminView)
6.在adminx.py 中,在該類下面添加
style_fields = {"detail":"ueditor"}
7.在\extra_apps\xadmin\plugins下的__init__.py文件中,將'ueditor'其添加在后面
8.在前端頁面里面 {% autoescape off %}    {% endautoescape %}


 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM