1.引入xadmin
1.将xadmin文件夹放入extra_apps目录下:
2.在每个app下新建adminx.py
1.apps/users/目录下新建adminx.py:
import xadmin from xadmin import views from .models import WxUsers class BaseSetting(object): enable_themes = True use_bootswatch = True class GlobalSettings(object): site_title = "越光后台管理系统" site_footer = "yg" # menu_style = "accordion" class WxUsersAdmin(object): list_display = ["open_id", "token", "nickName", "gender","province","city","country","last_login_time","add_time"] list_filter = [ "gender","province","city","country","last_login_time","add_time"] search_fields = ["gender","province","city","country" ] xadmin.site.register(WxUsers, WxUsersAdmin) xadmin.site.register(views.BaseAdminView, BaseSetting) xadmin.site.register(views.CommAdminView, GlobalSettings)
2.apps/wish/目录下新建adminx.py:
import xadmin from .models import Wish, News class WishAdmin(object): list_display = ['wxuser', 'content',"status","pv_num","up_num", "share_num","bb_num","end_time","add_time"] list_filter =['wxuser', 'content',"status","pv_num","up_num", "share_num","bb_num","end_time","add_time"] search_fields=['wxuser', 'content',"status","pv_num","up_num", "share_num","bb_num"] class NewsAdmin(object): list_display = ['user', 'banner',"title","content","add_time"] list_filter =['user', 'banner',"title","content","add_time"] search_fields=['user', 'banner',"title","content"] xadmin.site.register(Wish, WishAdmin) xadmin.site.register(News, NewsAdmin)
3.apps/user_operation/目录下新建adminx.py:
import xadmin from .models import Message,Pick,Share,Notice class MessageAdmin(object): list_display = ['user_send', 'user_receive',"wish","content","is_read","add_time"] list_filter =['user_send', 'user_receive',"wish","content","is_read","add_time"] search_fields=['user_send', 'user_receive',"wish","content","is_read"] class PickAdmin(object): list_display = ['user', 'wish',"action","add_time"] list_filter =['user', 'wish',"action","add_time"] search_fields=['user', 'wish'] class ShareAdmin(object): list_display = ['user', 'wish',"add_time"] list_filter =['user', 'wish',"add_time"] search_fields=['user', 'wish'] class NoticeAdmin(object): list_display = ['admin', 'content',"add_time"] list_filter =['admin', 'content',"add_time"] search_fields=['admin', 'content'] xadmin.site.register(Message, MessageAdmin) xadmin.site.register(Pick, PickAdmin) xadmin.site.register(Share, ShareAdmin) xadmin.site.register(Notice, NoticeAdmin)
3.安装和配置xadmin依赖包
1.安装依赖包 django-crispy-forms django-reversion django-formtools future httplib2 six django-import-export
pip install django-crispy-forms django-reversion django-formtools future httplib2 six django-import-export
2.在settings中注册
3.安装用来操作和导出Excel文件的包 xlwt xlsxwriter
pip install xlwt xlsxwriter
4.打开终端,执行数据更新命令,生成xadmin默认的表
python manage.py makemigrations python manage.py migrate
5.配置url,在ygapi/urls.py:
from django.contrib import admin from django.urls import path import xadmin urlpatterns = [ # path('admin/', admin.site.urls), path('xadmin/', xadmin.site.urls), ]
注意:真正上线之时,要把xadmin的路由设置一串密文那样复杂,面对真正的渗透高手,隐藏好后台管理系统的URL是唯一有意义的防范措施。
6.创建超级用户
python manage.py createsuperuser Username: admin 邮箱: Password: Password (again):
创建完毕,启动项目,然后访问
http://127.0.0.1:8000/xadmin/
就可以登录xadmin后台了,但是此时后台还是英文的。
7.将语言设定为中文
1.在settings中修改
LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = False
2.在每个app下的apps.py中做修改,加上verbose_name
1.apps/users/apps.py:
from django.apps import AppConfig class UsersConfig(AppConfig): name = 'users' verbose_name = '用户'
1.apps/user_operation/apps.py:
from django.apps import AppConfig class UserOperationConfig(AppConfig): name = 'user_operation' verbose_name = '用户操作'
1.apps/wish/apps.py:
from django.apps import AppConfig class WishConfig(AppConfig): name = 'wish' verbose_name = '愿望'
这时再看xadmin界面,已经变成中文的了。
越光后端开发——ygapi(3.引入xadmin)的更多相关文章
-
越光后端开发——ygapi(1.新建项目ygapi、新建MySQL数据库yg、项目连接数据库)
1.新建MySQL数据库 show databases;//查看已经有的数据库 create database yg; 2.新建项目ygapi 1.使用pycharm新建django项目取名ygapi ...
-
越光后端开发——ygapi(2.新建Model)
1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import mo ...
-
超越村后端开发(2:新建models.py+xadmin的引入)
1.新建Model 1.users数据 1.在apps/users/models.py中: from datetime import datetime from django.db import mo ...
-
从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 &; 我的前后端开发简史
---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...
-
后端开发实践——Spring Boot项目模板
在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...
-
ABP开发框架前后端开发系列---(3)框架的分层和文件组织
在前面随笔<ABP开发框架前后端开发系列---(2)框架的初步介绍>中,我介绍了ABP应用框架的项目组织情况,以及项目中领域层各个类代码组织,以便基于数据库应用的简化处理.本篇随笔进一步对 ...
-
ABP开发框架前后端开发系列---(2)框架的初步介绍
在前面随笔<ABP开发框架前后端开发系列---(1)框架的总体介绍>大概介绍了这个ABP框架的主要特点,以及介绍了我对这框架的Web API应用优先的一些看法,本篇继续探讨ABP框架的初步 ...
-
ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理
在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...
-
ABP开发框架前后端开发系列---(12)配置模块的管理
一般来说,一个系统或多或少都会涉及到一些系统参数或者用户信息的配置,而ABP框架也提供了一套配置信息的管理模块,ABP框架的配置信息,必须提前定义好配置的各项内容,然后才能在系统中初始化或者通过接口查 ...
随机推荐
-
wamp下多域名配置
1.找到wamp安装目录的apache安装目录 找到 httpd.conf文件 例如我安装的目录为 E:\wamp\bin\apache\apache2.2.8\conf\httpd.conf 也可以 ...
-
sdut 2846 Remove Trees (二分 + 贪心)
题目 和poj 上的一道题几乎一样. 题意:已知n棵树距第一棵树的距离,求删掉m棵树后的 树之间 的最小距离 的最大值. 思路:二分枚举最小的距离,注意二分的写法. #include <ios ...
-
在JSTL EL中处理java.util.Map,及嵌套List的情况
关联的键查找存储在映射中的值. 在方括号中指定键,并将相应的值作为表达式的值返回.例如,表达式 ${map['key']} 返回与 map标识符所引用的 Map 中的 "key" ...
-
android 选项卡TabHost
选项卡主要有TabHost.TabWiget和 FramentLayout3个组件组成,用于实现一个多标签的用户界面,通过他可以将一个复杂的对话分隔成若干个标签页,实现对信息的分类显示和管理.使用给组 ...
-
解决配置Windows Update失败问题
大家都清楚电脑总是需要更新一些补丁,不过,很多系统用户发现更新了补丁之后,开机会出现windows update更新失败的情况,提示“配置Windows Update失败,还原更改,请勿关闭计算机”信 ...
-
常识判断-科技-day123
PS: 在常识中科技是最难的 PS: 20-2w HZ是人能听到的频率 PS: 物体的熔点和凝固点是一致的 PS: 氮肥如果多了,可能只是长叶子不结果: 磷肥促进开花结果 PS; 病毒是介于生物和非 ...
-
区块链入门(4)Truffle创建项目,编译,及项目部署
上一章的结尾说这一次要讲编写一个智能合约部署到测试网络集群中,并进行交易,但我自己越看越觉得内容挺多的.先讲下truffle的项目创建,编译和部署的问题,然后再做上面说的事情吧. truffle是一套 ...
-
【BZOJ4061】[Cerc2012]Farm and factory(最短路,构造)
[BZOJ4061][Cerc2012]Farm and factory(最短路,构造) 题面 BZOJ 然而权限题QwQ. 题解 先求出所有点到达\(1,2\)的最短路,不妨记为\(d_{u,1}, ...
-
序列操作bzoj2962(未完成)
题解: 注意到k<=20;记录20个数f1...f20表示从选1-20个数的乘积分别为多少, 那么是一个(…+x)(…+x)……(…+x) 拆括号,枚举含有j个x,那么就是xj∗f[i−j]∗C ...
-
关于JavaScript 常见的面试题
关于JavaScript常见的面试题总结 一.JavaScript基本数据类型 null:空.无.表示不存在,当为对象的属性赋值为null,表示删除该属性 undefined:未定义.当声明变量却没有 ...