Skip to content

Commit 0a8e094

Browse files
authored
Update README.md
1 parent 92ea71d commit 0a8e094

File tree

1 file changed

+204
-2
lines changed

1 file changed

+204
-2
lines changed

README.md

Lines changed: 204 additions & 2 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,6 +13,8 @@
1313

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

16+
# 🤟 快速上手
17+
1618
📨 互动交流反馈QQ群: 304094780
1719

1820
[快速上手](#快速上手)
@@ -148,4 +150,204 @@ path('api/xadmin/v1/', include('tyadmin_api.urls')),
148150
## 6. 运行项目
149151

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

0 commit comments

Comments
 (0)