书接上回:强力Django+ 杀手级xadmin开发在线教育网站 (全新开发) 这套教程来从零开始实现搭建一个在线教育网站
第二天:
今天的任务就是就要清楚整套课程的重点了 xamin 了他是一个基于django的开发的 第三方后台管理系统
前戏部分
首先就是引用这个xadmin这个资源 然后根据里面的教程来进行一步一步的配置,在配置的过程中可能会遇到这样的一个错误
ModuleNotFoundError: No module named 'widgets'
在网上的教程教程是让你直接
pip install DjangoUedito
但是他下载的DjangoUedito 的版本跟python3不兼容,依旧会出现其他错误这里的解决方法是 在github上搜索DjangoUedito DjangoUeditor收到放到vevn中
包的问题解决了 ,接下来就是setting.py 的设置 首先是中文显示的问题
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
将setting中对应的设置为上面的设置。
接下来是设置后台上传文件的路径
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname('__file__')))
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
from django.conf.urls.static import static
from 项目名 import settings
urlpatterns += static(settings.MEDIA_URL,document_root = settings.MEDIA_ROOT)
还有一步就是 在项目的根目录下创建一个 media文件夹,这个文件是以后后台上传的文件保存文件夹。
高潮部分
在django原生admin中我们要注册一个数据库就需要在 admin.py(新建app里面自带的)里面进行注册
而在xadmin中 他的注册步骤跟原生的差不多 只有文件名不能,这里我们需要在对应的app中创建一个adminx.py的文件 里面来注册数据库
下面是本次项目中注册的adminx
from apps.courses import models
import xadmin
class GlobalSettings(object):
site_title='幕学管理系统'
site_footer = '幕学管理系统'
menu_style='accordion'
xadmin.site.register(xadmin.views.CommAdminView,GlobalSettings)
class BaseSetting(object):
enable_themes=True
use_bootswatch =True
xadmin.site.register(xadmin.views.BaseAdminView,BaseSetting)
class CourseAdmin(object):
list_display = ['name', 'teacher', 'desc', 'category', 'students', 'tag', 'degree']
search_fields = ['name', 'teacher', 'desc', 'category', 'tag']
list_filter = ['name', 'teacher__name', 'add_time', 'category', 'tag']
list_editable = ['name', 'teacher', 'category', 'tag']
xadmin.site.register(models.Course, CourseAdmin)
class LessonAdmin(object):
list_display = ['course', 'name', 'learn_times']
search_fields = ['course', 'name']
list_filter = ['course', 'name', 'add_time']
list_editable = ['course', 'name']
xadmin.site.register(models.Lesson, LessonAdmin)
class VideoAdmin(object):
list_display = ['lesson', 'name', 'learn_times']
search_fields = ['lesson', 'name']
list_filter = ['lesson', 'name', 'add_time']
list_editable = ['lesson', 'name']
xadmin.site.register(models.Video, VideoAdmin)
class CourseResourceAdmin(object):
list_display = ['course', 'name']
search_fields = ['course', 'name']
list_filter = ['course', 'name', 'add_time']
xadmin.site.register(models.CourseResource, CourseResourceAdmin)
from apps.operation import models
import xadmin
class CityAdmin(object):
list_display=['name','desc']
search_fields =['name','desc']
list_filter = ['name','desc','add_time']
list_editable=['name','desc']
xadmin.site.register(models.City, CityAdmin)
class CourseOrgAdmin(object):
list_display = ['name', 'desc', 'tag', 'category', 'address', 'course_nums']
search_fields = ['name', 'desc', 'address', 'categoryChoices']
list_filter = ['name', 'desc', 'add_time', 'category']
list_editable = ['name', 'desc', 'categoryChoices']
xadmin.site.register(models.CourseOrg, CourseOrgAdmin)
class TeacherAdmin(object):
list_display = ['org','name', 'work_years', 'work_company', 'work_position']
search_fields = ['name', 'work_company', 'org', 'work_position']
list_filter = ['name', 'org', 'add_time', 'work_company']
list_editable = ['org', 'name', 'work_company']
xadmin.site.register(models.Teacher, TeacherAdmin)
import xadmin
from apps.organizations.models import *
class UserAskAdmin(object):
list_display = ['name', 'mobile', 'course_name', 'add_time']
search_fields = ['name', 'mobile', 'course_name']
list_filter = ['name', 'mobile', 'course_name', 'add_time']
class UserCourseAdmin(object):
list_display = ['user', 'course', 'add_time']
search_fields = ['user', 'course']
list_filter = ['user', 'course', 'add_time']
class UserMessageAdmin(object):
list_display = ['user', 'message', 'add_time']
search_fields = ['user', 'message' ]
list_filter = ['user', 'message', 'add_time']
class CourseCommentsAdmin(object):
list_display = ['user', 'course', 'comments', 'add_time']
search_fields = ['user', 'course', 'comments']
list_filter = ['user', 'course', 'comments', 'add_time']
class UserFavoriteAdmin(object):
list_display = ['user', 'fav_id', 'fav_type', 'add_time']
search_fields = ['user', 'fav_id', 'fav_type']
list_filter = ['user', 'fav_id', 'fav_type', 'add_time']
xadmin.site.register(UserAsk, UserAskAdmin)
xadmin.site.register(UserCourse, UserCourseAdmin)
xadmin.site.register(UserMessage, UserMessageAdmin)
xadmin.site.register(CourseComments, CourseCommentsAdmin)
xadmin.site.register(UserFavorite, UserFavoriteAdmin)
这里 xadmin 就自动把user表注册到数据中我们就不用再设置一个userAdmin
这里 的Admin我们可以自定义在后台的显示等操作 里面有很多方法和参数这里我就先随便举一个列子来说一下里面基本的参数
class CityAdmin(object):
list_display=['name','desc']
search_fields =['name','desc']
list_filter = ['name','desc','add_time']
list_editable=['name','desc']
注意上面列表的字段其中如果有外键字段我们可以使用 外键名__外键表的字段 来进行查询或操作
例子
class CourseAdmin(object):
list_display = ['name', 'teacher', 'desc', 'category', 'students', 'tag', 'degree']
search_fields = ['name', 'teacher', 'desc', 'category', 'tag']
list_filter = ['name', 'teacher__name', 'add_time', 'category', 'tag']
list_editable = ['name', 'teacher', 'category', 'tag']
|