1- # 基于Django Restful Framework 和 Antd Design Pro V4 类似Xadmin 的基于Models 的管理后台前后端生成工具 。
1+ # TyAdmin 基于Django Restful Framework 和 Antd Design Pro V4 的基于Models 的 ** No Code ** 零代码零学习成本管理后台前后端生成工具 。
22
33![ ] ( https://img.shields.io/pypi/v/tyadmin-api-cli )
44![ ] ( https://img.shields.io/pypi/wheel/tyadmin-api-cli )
55
6- 更强大,更现代化,自定义度更高的Xadmin!!!
7- 自动生成前后端管理后台,神奇自动对接。免去普通增删改查,筛选,搜索功能开发。
6+ TyAdmin: 只需要花五分钟按着README中快速上手配置,无额外文档,无框架学习成本,零代码,全自动!更强大!更现代化!功能更多!
87
9- 交流反馈群: 304094780
8+ 0 . 自动生成前后端管理后台,页面接口神奇全自动对接。登录验证,修改密码,Dashboard数据统计。
9+ 1 . 一次拥有 ** 增删改查,筛选,搜索,数据全量导出,选择导出**
10+ 2 . 外键字段,多对多字段,富文本,文件,图片,django自带权限系统,
11+ 3 . 已兼容第三方 django-celery-beat 后台管理
12+
13+ ## 多种登录方式
14+
15+ ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201130234228.png )
16+
17+ ## 内嵌自动dashboard,自动注册现有model count 数据。
18+
19+ ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201130234054.png )
20+
21+ ## 全自动的列表展示,增删改查, 筛选,搜索,导出Excel
22+
23+ ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201130234448.png )
24+
25+ ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201130234525.png )
26+
27+ ## django自带权限组支持,外键蓝点小标记pop支持
28+
29+ ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201130234705.png )
30+
31+ ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201130234753.png )
32+
33+ ## 基于Model定义的表单字段级别自动验证
34+
35+ ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010194705.png )
36+
37+ ## 内嵌富文本支持,仅需把字段定义为` richTextField ` ,无需任何额外集成。
38+
39+ ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010192630.png )
1040
11- 只需要设计好Model,运行两条命令 ` python manage.py init_admin ` , ` python manage.py gen_all `
41+ 交流反馈群: 304094780
1242
13- > 后端代码生成一个django app到项目目录, 代码归你掌控,无阻二次开发!
14- > 前端生成一个完整的Antd design pro V4项目,代码归你掌控,无阻二次开发!
43+ 只需要设计好Model,在settings中配置需要生成哪些model,运行一条命令` python manage.py init_admin && python manage.py gen_all `
1544
16- 前端页面, 后端接口,路由,菜单全部自动对接。
45+ > 后端代码生成一个django app到项目目录, 只需注册一下, 无需再写一行代码! 代码归你掌控,无阻二次开发!
46+ > 前端生成一个完整的Antd design pro V4项目,只需启动一次,无需再写一行代码! 代码归你掌控,无阻二次开发!
1747
18- 已生成示例网站:
48+ 前端页面,后端接口,路由,菜单全部自动对接。
1949
20- 1 . https://imooc.funpython.cn/xadmin
50+ ## 在线demo地址(待上线):
2151
22- 2 . https ://mooc .funpython.cn/xadmin
52+ > http ://demo .funpython.cn
2353
24- ## demo项目快速上手
54+ # 快速上手 (已有项目可从第二步开始,注意修改GEN_APPS 变量为自己需要生成的app列表)
2555
56+ > 如有问题,可对比demos下tyadmin_demo_finish项目找自己的不同
2657
27- ### 1. 获得一个还未拥有后台api界面的demo项目代码(已存在项目可直接从第二步开始):
58+ ### 1. 下载demo项目安装依赖
2859
2960```
30- git clone https://github.com/mtianyan/cookiecutter-tyadmin-demo.git
61+ git clone https://github.com/mtianyan/tyadmin_api_cli.git
62+ cd tyadmin_api_cli/demos/tyadmin_demo_init
3163# 安装项目 原本就需要的依赖
3264pip install -r requirement.txt
3365```
3466
35- ### 2. 安装tyadmin-api-cli
67+ ### 2. 安装tyadmin-api-cli并注册tyadmin-api- cli
3668
3769```
3870pip install tyadmin-api-cli
39- ```
40-
41- ### 3. 注册tyadmin-api-cli
4271
43- ```
4472INSTALLED_APPS = [
73+ 'captcha',
4574 'tyadmin_api_cli',
4675]
4776
4877TY_ADMIN_CONFIG = {
49- 'GEN_APPS': ['users', 'article ']
78+ 'GEN_APPS': ['demo ']
5079}
5180```
5281
53- 填写你想要生成的app列表。
82+ GEN_APPS: 填写你想要生成的app列表。
5483
55- ### 4 . 初始化 后端app 及 前端项目 并 生成后端自动化的视图,过滤器,路由,序列器。 前端页面及路由菜单。
84+ ### 3 . 初始化 后端app(tyadmin_api) + 前端项目(tyadmin) && 生成后端自动化的视图,过滤器,路由,序列器 + 前端页面及路由菜单
5685
5786```
5887python manage.py init_admin && python manage.py gen_all
5988```
6089
6190### 5. 注册生成出的app
6291
63- ```
92+ ``` diff
6493INSTALLED_APPS = [
65- 'tyadmin_api_cli',
6694 'captcha',
67- 'tyadmin_api'
95+ 'tyadmin_api_cli',
96+ + 'tyadmin_api'
6897]
6998```
7099
71100### 6. 注册路由
72101
102+ demos/tyadmin_demo_complete/tyadmin_demo/urls.py
103+
73104```
74105 path('api/xadmin/v1/', include('tyadmin_api.urls')),
75106```
@@ -79,6 +110,7 @@ INSTALLED_APPS = [
79110```
80111python manage.py makemigrations
81112python manage.py migrate
113+ python manage.py createsuperuser # 创建一个可以登入后台的用户
82114python manage.py runserver # 默认运行在8000端口
83115```
84116
@@ -89,22 +121,12 @@ python manage.py runserver # 默认运行在8000端口
89121```
90122cd tyadmin
91123npm install
92- npm run start # 默认会运行在8001端口
124+ npm run start:dev # 默认会运行在8001端口
93125```
94126
95- 访问http://127.0.0.1:8001/xadmin/
127+ 访问http://127.0.0.1:8001/xadmin/ 输入刚才创建的用户名密码登录查看系统
96128
97- ## 内嵌自动dashboard,自动注册现有model count 数据。
98-
99- ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010184239.png )
100-
101- ## 全自动的列表展示,搜索,筛选功能。
102-
103- ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010192457.png )
104-
105- ## 内嵌富文本支持,仅需把字段定义为` richTextField ` ,无需任何额外集成。
106-
107- ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010192630.png )
129+ # 附录(随意了解一下即可)
108130
109131## model->前端对应关系
110132
@@ -123,27 +145,9 @@ npm run start # 默认会运行在8001端口
123145| DateField| Date选择器|
124146| DateTimeField| DateTime选择器|
125147
126-
127-
128148### ForeignKey自动生成下拉单选菜单, ManyToManyField自动生成下拉多选菜单
129149
130- > 指定` f'{MAIN_DISPLAY}__name' ` 关联另一张表哪个字段用于table显示
131-
132- ``` python
133- course_org = ForeignKey(CourseOrg, verbose_name = " 所属机构" ,
134- help_text = f ' { MAIN_DISPLAY } __name ' )
135- ```
136150
137- ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010192310.png )
138-
139- ```
140- labels = ManyToManyField("Label", verbose_name="课程拥有的label",
141- help_text=f'{MAIN_DISPLAY}__title')
142- ```
143-
144- ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010194349.png )
145-
146- ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010194222.png )
147151
148152### richTextField 自动生成富文本
149153
@@ -168,24 +172,20 @@ gender = CharField(verbose_name="性别",choices=GENDER_CHOICES)
168172### ImageField 自动生成带预览的表单上传功能,列表页可选两种展示方式。
169173
170174``` python
171- avatar = ImageField(verbose_name = " 头像" , help_text = MAIN_AVATAR )
172- image = ImageField(verbose_name = " 封面图" , help_text = MAIN_PIC )
175+ avatar = ImageField(verbose_name = " 头像" ) # 变量名为avatar或logo的会自动为头像样式
176+ image = ImageField(verbose_name = " 封面图" )
173177```
174178
175179![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010191641.png )
176180
177- 头像样式 ` MAIN_AVATAR ` :
178-
179181![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010191917.png )
180182
181- 图片样式 ` MAIN_PIC ` :
182-
183183![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010191843.png )
184184
185185### FileField 字段生成文件上传功能。
186186
187187```
188- download = FileField(verbose_name="资源文件", max_length=100 )
188+ download = FileField(verbose_name="资源文件")
189189```
190190
191191![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010193041.png )
@@ -219,7 +219,7 @@ birthday = DateField(verbose_name="生日")
219219```
220220![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010193614.png )
221221
222- ### DateTimeField 自动表单 DateTime 选择框。 时间范围筛选器。
222+ ### DateTimeField 自动表单 DateTime 选择框, 时间范围筛选器。
223223
224224```
225225last_login = DateTimeField(verbose_name="上次登录")
@@ -231,19 +231,5 @@ last_login = DateTimeField(verbose_name="上次登录")
231231
232232![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010195116.png )
233233
234- ## 基于Model定义的表单字段级别自动验证
235-
236- ```
237- title = CharField(max_length=255, verbose_name="课程标题", unique=True)
238- ```
239-
240- ![ ] ( http://cdn.pic.mtianyan.cn/blog_img/20201010194705.png )
241-
242- ## 轻松的后端自定义验证
243-
244- ```
245- if xxx:
246- raise ValidationError({"filed_name": ["错误提示"]})
247- ```
248234
249235
0 commit comments