|
1 | | -# TyAdmin: Django 基于Models 的 **No Code** 零代码零学习成本管理后台前后端生成工具, 由Django Restful Framework 和 Antd Design Pro V4 驱动 |
| 1 | +# TyAdmin: Django 基于Models 的 **No Code** 零代码零学习成本管理后台前后端生成工具, 由Django Restful Framework 和 Ant Design Pro V4 驱动 |
2 | 2 |
|
3 | 3 |  |
4 | 4 |  |
|
13 | 13 |
|
14 | 14 | TyAdmin: 只需要花五分钟阅读README即可快速上手,无额外文档,无框架学习成本,不用自己写一行代码,全自动的后台,你值得拥有! |
15 | 15 |
|
16 | | -# 🤟 快速上手 |
17 | | - |
18 | 16 | 📨 互动交流反馈QQ群: 304094780 |
19 | 17 |
|
20 | | -[直接上手](#快速上手) |
| 18 | +[快速上手](#快速上手) |
21 | 19 |
|
22 | 20 | # ✨ 特性 |
23 | 21 |
|
@@ -150,213 +148,4 @@ path('api/xadmin/v1/', include('tyadmin_api.urls')), |
150 | 148 | ## 6. 运行项目 |
151 | 149 |
|
152 | 150 | ``` |
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 | | -```diff |
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 | | -## 5. 如何更新tyadmin版本,强制覆盖上次生成 |
227 | | - |
228 | | -``` |
229 | | -TY_ADMIN_CONFIG = { |
230 | | - 'FORCED_COVER': True, |
231 | | -} |
232 | | -``` |
233 | | - |
234 | | -# 🤝 贡献者名单: |
235 | | - |
236 | | -[longyn](https://github.com/longyn) |
237 | | - |
238 | | -# 🤟 打赏 |
239 | | - |
240 | | -很高兴我的项目代码或许对你有帮助,请我吃包辣条或喝瓶可乐吧! |
241 | | - |
242 | | -微信打赏: |
243 | | - |
244 | | - |
245 | | - |
246 | | -# 🔑 License |
247 | | - |
248 | | -[MIT](https://github.com/go-admin-team/go-admin/blob/master/LICENSE.md) |
249 | | - |
250 | | -Copyright (c) 2020 mtianyan |
251 | | - |
252 | | - |
253 | | -# 附录 |
254 | | - |
255 | | -## model->前端对应关系 |
256 | | - |
257 | | -| 字段类型 | 前端展示 | |
258 | | -| ---- | ---- | |
259 | | -| ForeignKey | 单选 | |
260 | | -| ManyToManyField | 多选 & 多彩标签展示 | |
261 | | -| richTextField | 富文本展示 | |
262 | | -| CharField or IntegerField(with choices) | 多选 | |
263 | | -| CharField or IntegerField | 输入框 | |
264 | | -| ImageField | 带预览上传,可选头像,图片列表展示 | |
265 | | -| FileField | 文件上传 | |
266 | | -| TextField | TextArea框 | |
267 | | -| BooleanField | Switch选择| |
268 | | -| IntegerField | 数字input| |
269 | | -| DateField| Date选择器| |
270 | | -| DateTimeField| DateTime选择器| |
271 | | - |
272 | | -### ForeignKey自动生成下拉单选菜单, ManyToManyField自动生成下拉多选菜单或穿梭框 |
273 | | - |
274 | | - |
275 | | - |
276 | | - |
277 | | - |
278 | | - |
279 | | - |
280 | | -### richTextField 自动生成富文本 |
281 | | - |
282 | | -``` |
283 | | -detail = richTextField(verbose_name="课程详情") |
284 | | -``` |
285 | | - |
286 | | - |
287 | | - |
288 | | -### CharField和IntegerField choices 自动生成表单前端下拉选择框。 |
289 | | - |
290 | | -```python |
291 | | -GENDER_CHOICES = ( |
292 | | - ("male", "男"), |
293 | | - ("female", "女") |
294 | | -) |
295 | | -gender = CharField(verbose_name="性别",choices=GENDER_CHOICES) |
296 | | -``` |
297 | | - |
298 | | - |
299 | | - |
300 | | -### ImageField 自动生成带预览的表单上传功能,列表页可选两种展示方式。 |
301 | | - |
302 | | -```python |
303 | | -avatar = ImageField(verbose_name="头像") # 变量名为avatar或logo的会自动为头像样式 |
304 | | -image = ImageField(verbose_name="封面图") |
305 | | -``` |
306 | | - |
307 | | - |
308 | | - |
309 | | - |
310 | | - |
311 | | - |
312 | | - |
313 | | -### FileField 字段生成文件上传功能。 |
314 | | - |
315 | | -``` |
316 | | -download = FileField(verbose_name="资源文件") |
317 | | -``` |
318 | | - |
319 | | - |
320 | | - |
321 | | -### TextField 自动生成前端TextArea 框 |
322 | | - |
323 | | -```python |
324 | | -desc = TextField(verbose_name="课程描述") |
325 | | -``` |
326 | | - |
327 | | - |
328 | | - |
329 | | -### BooleanField 自动前端 Boolean 单选 |
330 | | - |
331 | | -```python |
332 | | -is_banner = BooleanField(verbose_name="是否轮播") |
333 | | -``` |
334 | | - |
335 | | - |
336 | | - |
337 | | -### IntegerField 自动前端 Int 输入框 |
338 | | -``` |
339 | | -learn_times = IntegerField(verbose_name="学习时长(分钟数)") |
340 | | -``` |
341 | | - |
342 | | - |
343 | | -### DateField 自动前端 Date选择框 |
344 | | - |
345 | | -``` |
346 | | -birthday = DateField(verbose_name="生日") |
347 | | -``` |
348 | | - |
349 | | - |
350 | | -### DateTimeField 自动表单 DateTime 选择框,时间范围筛选器。 |
351 | | - |
352 | | -``` |
353 | | -last_login = DateTimeField(verbose_name="上次登录") |
354 | | -``` |
355 | | - |
356 | | - |
357 | | - |
358 | | ->注意设置了default,auto_now的不会出现在表单 |
359 | | -
|
360 | | - |
361 | | - |
362 | | - |
| 151 | +python manage.py |
0 commit comments