2)djangoTest虚拟环境中安装django版本:
pipinstalldjango==2.0.2
3)打开pycharm,新建python-django项目
pycharm新建项目,默认用的是自带ORM数据库(sqlite),将其改成使用mysql数据库
1)setting.py中更改数据库配置:
DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'MxOnline',#数据库名字'USER':'root',#账号'PASSWORD':'******',#密码'HOST':'127.0.0.1',#IP'PORT':'3306',#端口}}2)Navicat新建数据库:
3)虚拟环境下安装MySQLclient:
一般直接安装:pipinstallmysqlclient,
但有可能报错:Failedbuildingwheelformysqlclient
此时,需要用另一种方式安装:
1、生成四个app:users、course、organization、operation
2、再创建一个extra_apps包,表示存放的是第三方的源码包
3、在setting中配置:
importsyssys.path.insert(0,os.path.join(BASE_DIR,'apps'))sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))4、将4个app注册到INSTALLED_APPS中:
INSTALLED_APPS=['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','users','course','organization','operation',]
另外需要创建静态文件夹:
setting中配置静态文件路径:
#静态文件路径STATIC_URL='/static/'STATICFILES_DIRS=[os.path.join(BASE_DIR,'static'),]#设置上传文件的路径MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,'media')此时,项目中文件情况:
1、users中的models.py表:
报错:
pipinstallpillow#安装pillowUserProfile继承于django自带的AbstractUser,需要重新配置AUTH_USER_MODEL的重载:
2、course/views.py表设计:
3、organization/views.py表设计:
4、operation/views.py表设计:
1、xadmin安装:两种方式安装
1)虚拟环境下,直接:pipinstallxadmin,会连xadmin依赖的包也都安装好
2)源码安装(推荐):
从GitHub上下载xadmin,然后复制放到项目中。本项目将xadmin放到extra_apps包中,
2、xadmin的配置:
1)在在setting.py中的INSTALLED_APPS中注册:
INSTALLED_APPS=[…'xadmin',#新增'crispy_forms',#新增]2)在url.py中进行路由配置:
#urls.pyfromdjango.urlsimportpathimportxadminurlpatterns=[path('xadmin/',xadmin.site.urls),]
3、app注册后,更新表mk生成数据:
pythonmanage.pymakemigrationspythonmanage.pymigrate
pythonmanage.pycreatesuperuser此时,页面效果:xadmin成功引人使用!
5.2、app中model的注册
1)在users下面创建adminx.py,代码如下:
#users/adminx.pyimportxadminfrom.modelsimportEmailVerifyRecord#xadmin中这里是继承object,不再是继承adminclassEmailVerifyRecordAdmin(object):passxadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)
2)完善功能,增加显示字段、过滤、搜索等
将剩余三个app也进行上述操作,最终代码:
1)users/adminx.py:
importxadminfrom.modelsimportEmailVerifyRecord,Banner#xadmin中这里是继承object,不再是继承adminclassEmailVerifyRecordAdmin(object):#显示的列list_display=['code','email','send_type','send_time']#搜索的字段search_fields=['code','email','send_type']#过滤list_filter=['code','email','send_type','send_time']classBannerAdmin(object):list_display=['title','image','url','index','add_time']search_fields=['title','image','url','index']list_filter=['title','image','url','index','add_time']xadmin.site.register(EmailVerifyRecord,EmailVerifyRecordAdmin)xadmin.site.register(Banner,BannerAdmin)users/adminx.py
2)course/adminx.py:
3)organization/adminx.py:
#organization/adminx.pyimportxadminfrom.modelsimportCityDict,CourseOrg,TeacherclassCityDictAdmin(object):'''城市'''list_display=['name','desc','add_time']search_fields=['name','desc']list_filter=['name','desc','add_time']classCourseOrgAdmin(object):'''机构'''list_display=['name','desc','click_nums','fav_nums','add_time']search_fields=['name','desc','click_nums','fav_nums']list_filter=['name','desc','click_nums','fav_nums','city__name','address','add_time']classTeacherAdmin(object):'''老师'''list_display=['name','org','work_years','work_company','add_time']search_fields=['org','name','work_years','work_company']list_filter=['org__name','name','work_years','work_company','click_nums','fav_nums','add_time']xadmin.site.register(CityDict,CityDictAdmin)xadmin.site.register(CourseOrg,CourseOrgAdmin)xadmin.site.register(Teacher,TeacherAdmin)organization/adminx.py
4)operation/adminx.py:
5.3、xadmin的全局配置(全局配置,放在users下的adminx.py文件中)
1)主题功能:
fromxadminimportviews#创建xadmin的最基本管理器配置,并与view绑定classBaseSetting(object):#开启主题功能enable_themes=Trueuse_bootswatch=True#将基本配置管理与view绑定xadmin.site.register(views.BaseAdminView,BaseSetting)
2)全局配置:
#全局修改,固定写法classGlobalSettings(object):#修改titlesite_title='在线教育后台管理系统'#修改footersite_footer='在线教育网'#菜单可收起/展开menu_style='accordion'#将title和footer信息进行注册xadmin.site.register(views.CommAdminView,GlobalSettings)
3)将app名称从英文改为中文:
第一步,在各app下的apps.py中,比如users/apps.py添加:
verbose_name='用户'fromdjango.appsimportAppConfigclassUsersConfig(AppConfig):name='users'verbose_name='用户'#新增
第二步,有两种方式:
1、在同app下的init.py文件中,如users/__init__.py中添加下面一行代码,即可实现app名称中文化
2、直接在setting中的INSTALLED_APPS中配置,即可实现app名称中文化
INSTALLED_APPS=[……'apps.users.apps.UsersConfig','apps.organization.apps.OrganizationConfig','apps.operation.apps.OperationConfig','apps.course.apps.CourseConfig',#'users',#'operation',#'organization',#'course',……]