Skip to content

Commit 8bfa068

Browse files
committed
v0.8.1 release
1 parent e7f3624 commit 8bfa068

File tree

1 file changed

+247
-49
lines changed

1 file changed

+247
-49
lines changed

README.md

Lines changed: 247 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
![](https://img.shields.io/pypi/v/tyadmin-api-cli)
44
![](https://img.shields.io/pypi/wheel/tyadmin-api-cli)
55

6-
## 🎬 在线体验Demo
6+
# 🎬 在线体验Demo
77

88
>账号: tyadmin 密码: tyadmin
99
@@ -13,54 +13,9 @@
1313

1414
TyAdmin: 只需要花五分钟阅读README即可快速上手,无额外文档,无框架学习成本,不用自己写一行代码,全自动的后台,你值得拥有!
1515

16-
📨 互动交流反馈QQ群: 304094780
17-
18-
[快速上手](#快速上手)
19-
20-
# ✨ 特性
21-
22-
- 自动生成前后端管理后台,页面接口神奇全自动对接。登录验证,修改密码,Dashboard数据统计。
23-
- 一次拥有 **增删改查,筛选,搜索,数据全量导出,选择导出**
24-
- **外键字段,多对多字段,富文本,文件,图片,django自带权限系统**
25-
26-
只需要设计好Model,在settings中配置需要生成哪些model,运行命令: [快速上手](#快速上手)
27-
28-
>后端生成一个django app到项目目录, 只需注册一下, 无需再写一行代码! 代码归你掌控,无阻二次开发!
29-
>前端生成一个Ant Design Pro V4项目,只需启动一次,无需再写一行代码! 代码归你掌控,无阻二次开发!
30-
31-
前端页面,后端接口,路由,菜单全部自动对接,你只需要拷贝文档,修改配置,不需要写一行代码!!
32-
33-
# 🎁 内置
34-
35-
## 1. 多种登录方式
36-
37-
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234228.png)
16+
# 🤟 快速上手
3817

39-
## 2. 内嵌自动dashboard,自动注册现有model count 数据。
40-
41-
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234054.png)
42-
43-
## 3. 全自动的列表展示,增删改查, 筛选,搜索,导出Excel
44-
45-
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234448.png)
46-
47-
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234525.png)
48-
49-
## 4. django自带权限组支持,外键蓝点小标记pop支持
50-
51-
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234705.png)
52-
53-
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234753.png)
54-
55-
## 5. 基于Model定义的表单字段级别自动验证
56-
57-
![](http://cdn.pic.mtianyan.cn/blog_img/20201010194705.png)
58-
59-
## 6. 内嵌富文本支持,仅需把字段定义为`richTextField`,无需任何额外集成。
60-
61-
![](http://cdn.pic.mtianyan.cn/blog_img/20201010192630.png)
62-
63-
# 快速上手
18+
📨 互动交流反馈QQ群: 304094780
6419

6520
>已有项目可从第二步开始,注意修改GEN_APPS 变量为自己需要生成的app列表
6621
>如有问题,可对比demos下tyadmin_demo_finish项目找自己的不同,以及查看[QA环节](#QA环节)
@@ -148,4 +103,247 @@ path('api/xadmin/v1/', include('tyadmin_api.urls')),
148103
## 6. 运行项目
149104

150105
```
151-
python manage.py
106+
python manage.py makemigrations
107+
python manage.py migrate
108+
python manage.py createsuperuser # 创建一个可以登入后台的用户
109+
python manage.py runserver # 默认运行在8000端口
110+
```
111+
112+
访问http://127.0.0.1:8000/xadmin/ 输入刚才创建的用户名密码登录
113+
114+
至此大功告成!
115+
116+
>如果没有成功看到页面,请查看QA部分
117+
118+
# ✨ 特性
119+
120+
- 自动生成前后端管理后台,页面接口神奇全自动对接。登录验证,修改密码,Dashboard数据统计。
121+
- 一次拥有 **增删改查,筛选,搜索,数据全量导出,选择导出**
122+
- **外键字段,多对多字段,富文本,文件,图片,django自带权限系统**
123+
124+
只需要设计好Model,在settings中配置需要生成哪些model,运行命令: [快速上手](#快速上手)
125+
126+
>后端生成一个django app到项目目录, 只需注册一下, 无需再写一行代码! 代码归你掌控,无阻二次开发!
127+
>前端生成一个Ant Design Pro V4项目,只需启动一次,无需再写一行代码! 代码归你掌控,无阻二次开发!
128+
129+
前端页面,后端接口,路由,菜单全部自动对接,你只需要拷贝文档,修改配置,不需要写一行代码!!
130+
131+
# 🎁 内置
132+
133+
## 1. 多种登录方式
134+
135+
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234228.png)
136+
137+
## 2. 内嵌自动dashboard,自动注册现有model count 数据。
138+
139+
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234054.png)
140+
141+
## 3. 全自动的列表展示,增删改查, 筛选,搜索,导出Excel
142+
143+
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234448.png)
144+
145+
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234525.png)
146+
147+
## 4. django自带权限组支持,外键蓝点小标记pop支持
148+
149+
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234705.png)
150+
151+
![](http://cdn.pic.mtianyan.cn/blog_img/20201130234753.png)
152+
153+
## 5. 基于Model定义的表单字段级别自动验证
154+
155+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010194705.png)
156+
157+
## 6. 内嵌富文本支持,仅需把字段定义为`richTextField`,无需任何额外集成。
158+
159+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010192630.png)
160+
161+
# QA环节
162+
163+
## 0. `TemplateDoesNotExist at /xadmin/ TyAdmin/index.html`
164+
165+
settings.py 中配置templates 路径
166+
167+
```diff
168+
TEMPLATES = [
169+
{
170+
'BACKEND': 'django.template.backends.django.DjangoTemplates',
171+
- 'DIRS': [],
172+
+ 'DIRS': [os.path.join(BASE_DIR, 'templates')],
173+
```
174+
## 1. 卡在loading页面,一直无法登陆
175+
176+
settings.py 中配置static 路径
177+
178+
```
179+
if DEBUG:
180+
STATICFILES_DIRS = [
181+
os.path.join(BASE_DIR, "static"),
182+
]
183+
else:
184+
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
185+
```
186+
187+
## 2. 图片没有正常显示
188+
189+
urls.py
190+
191+
```
192+
from django.views.static import serve
193+
194+
urlpatterns = [
195+
re_path('media/(?P<path>.*)', serve, {"document_root": settings.MEDIA_ROOT}),
196+
]
197+
```
198+
199+
## 3. 当项目新增了model,我该如何为新model生成前端页面+后端接口
200+
201+
```diff
202+
+TY_ADMIN_CONFIG = {
203+
+ 'GEN_APPS': ['demo','new_app']
204+
+}
205+
```
206+
如上GEN_APPS 中添加新app的name,然后运行下面命令
207+
208+
```
209+
python manage.py gen_all && cd tyadmin && npm run build
210+
```
211+
212+
## 4. 如何运行生成的前端独立项目
213+
214+
```
215+
cd tyadmin
216+
npm install
217+
npm run start:dev # 默认会运行在8001端口
218+
```
219+
220+
请确认django运行在8000端口,访问 http://127.0.0.1:8001/xadmin/
221+
222+
# 🤝 贡献者名单:
223+
224+
[longyn](https://github.com/longyn)
225+
226+
# 🤟 打赏
227+
228+
很高兴我的项目代码或许对你有帮助,请我吃包辣条或喝瓶可乐吧!
229+
230+
微信打赏:
231+
232+
![mark](http://myphoto.mtianyan.cn/blog/180302/i52eHgilfD.png?imageslim)
233+
234+
# 🔑 License
235+
236+
[MIT](https://github.com/go-admin-team/go-admin/blob/master/LICENSE.md)
237+
238+
Copyright (c) 2020 mtianyan
239+
240+
241+
# 附录
242+
243+
## model->前端对应关系
244+
245+
| 字段类型 | 前端展示 |
246+
| ---- | ---- |
247+
| ForeignKey | 单选 |
248+
| ManyToManyField | 多选 & 多彩标签展示 |
249+
| richTextField | 富文本展示 |
250+
| CharField or IntegerField(with choices) | 多选 |
251+
| CharField or IntegerField | 输入框 |
252+
| ImageField | 带预览上传,可选头像,图片列表展示 |
253+
| FileField | 文件上传 |
254+
| TextField | TextArea框 |
255+
| BooleanField | Switch选择|
256+
| IntegerField | 数字input|
257+
| DateField| Date选择器|
258+
| DateTimeField| DateTime选择器|
259+
260+
### ForeignKey自动生成下拉单选菜单, ManyToManyField自动生成下拉多选菜单或穿梭框
261+
262+
![](http://cdn.pic.mtianyan.cn/blog_img/20201202214922.png)
263+
264+
![](http://cdn.pic.mtianyan.cn/blog_img/20201202214936.png)
265+
266+
![](http://cdn.pic.mtianyan.cn/blog_img/20201202214957.png)
267+
268+
### richTextField 自动生成富文本
269+
270+
```
271+
detail = richTextField(verbose_name="课程详情")
272+
```
273+
274+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010193352.png)
275+
276+
### CharField和IntegerField choices 自动生成表单前端下拉选择框。
277+
278+
```python
279+
GENDER_CHOICES = (
280+
("male", ""),
281+
("female", "")
282+
)
283+
gender = CharField(verbose_name="性别",choices=GENDER_CHOICES)
284+
```
285+
286+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010190635.png)
287+
288+
### ImageField 自动生成带预览的表单上传功能,列表页可选两种展示方式。
289+
290+
```python
291+
avatar = ImageField(verbose_name="头像") # 变量名为avatar或logo的会自动为头像样式
292+
image = ImageField(verbose_name="封面图")
293+
```
294+
295+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010191641.png)
296+
297+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010191917.png)
298+
299+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010191843.png)
300+
301+
### FileField 字段生成文件上传功能。
302+
303+
```
304+
download = FileField(verbose_name="资源文件")
305+
```
306+
307+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010193041.png)
308+
309+
### TextField 自动生成前端TextArea 框
310+
311+
```python
312+
desc = TextField(verbose_name="课程描述")
313+
```
314+
315+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010192813.png)
316+
317+
### BooleanField 自动前端 Boolean 单选
318+
319+
```python
320+
is_banner = BooleanField(verbose_name="是否轮播")
321+
```
322+
323+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010193001.png)
324+
325+
### IntegerField 自动前端 Int 输入框
326+
```
327+
learn_times = IntegerField(verbose_name="学习时长(分钟数)")
328+
```
329+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010193445.png)
330+
331+
### DateField 自动前端 Date选择框
332+
333+
```
334+
birthday = DateField(verbose_name="生日")
335+
```
336+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010193614.png)
337+
338+
### DateTimeField 自动表单 DateTime 选择框,时间范围筛选器。
339+
340+
```
341+
last_login = DateTimeField(verbose_name="上次登录")
342+
```
343+
344+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010193852.png)
345+
346+
>注意设置了default,auto_now的不会出现在表单
347+
348+
![](http://cdn.pic.mtianyan.cn/blog_img/20201010195116.png)
349+

0 commit comments

Comments
 (0)