|
3 | 3 |  |
4 | 4 |  |
5 | 5 |
|
6 | | -## 🎬 在线体验Demo |
| 6 | +# 🎬 在线体验Demo |
7 | 7 |
|
8 | 8 | >账号: tyadmin 密码: tyadmin |
9 | 9 |
|
|
13 | 13 |
|
14 | 14 | TyAdmin: 只需要花五分钟阅读README即可快速上手,无额外文档,无框架学习成本,不用自己写一行代码,全自动的后台,你值得拥有! |
15 | 15 |
|
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 | | - |
| 16 | +# 🤟 快速上手 |
38 | 17 |
|
39 | | -## 2. 内嵌自动dashboard,自动注册现有model count 数据。 |
40 | | - |
41 | | - |
42 | | - |
43 | | -## 3. 全自动的列表展示,增删改查, 筛选,搜索,导出Excel |
44 | | - |
45 | | - |
46 | | - |
47 | | - |
48 | | - |
49 | | -## 4. django自带权限组支持,外键蓝点小标记pop支持 |
50 | | - |
51 | | - |
52 | | - |
53 | | - |
54 | | - |
55 | | -## 5. 基于Model定义的表单字段级别自动验证 |
56 | | - |
57 | | - |
58 | | - |
59 | | -## 6. 内嵌富文本支持,仅需把字段定义为`richTextField`,无需任何额外集成。 |
60 | | - |
61 | | - |
62 | | - |
63 | | -# 快速上手 |
| 18 | +📨 互动交流反馈QQ群: 304094780 |
64 | 19 |
|
65 | 20 | >已有项目可从第二步开始,注意修改GEN_APPS 变量为自己需要生成的app列表 |
66 | 21 | >如有问题,可对比demos下tyadmin_demo_finish项目找自己的不同,以及查看[QA环节](#QA环节) |
@@ -148,4 +103,247 @@ path('api/xadmin/v1/', include('tyadmin_api.urls')), |
148 | 103 | ## 6. 运行项目 |
149 | 104 |
|
150 | 105 | ``` |
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 | + |
| 136 | + |
| 137 | +## 2. 内嵌自动dashboard,自动注册现有model count 数据。 |
| 138 | + |
| 139 | + |
| 140 | + |
| 141 | +## 3. 全自动的列表展示,增删改查, 筛选,搜索,导出Excel |
| 142 | + |
| 143 | + |
| 144 | + |
| 145 | + |
| 146 | + |
| 147 | +## 4. django自带权限组支持,外键蓝点小标记pop支持 |
| 148 | + |
| 149 | + |
| 150 | + |
| 151 | + |
| 152 | + |
| 153 | +## 5. 基于Model定义的表单字段级别自动验证 |
| 154 | + |
| 155 | + |
| 156 | + |
| 157 | +## 6. 内嵌富文本支持,仅需把字段定义为`richTextField`,无需任何额外集成。 |
| 158 | + |
| 159 | + |
| 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 | + |
| 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 | + |
| 263 | + |
| 264 | + |
| 265 | + |
| 266 | + |
| 267 | + |
| 268 | +### richTextField 自动生成富文本 |
| 269 | + |
| 270 | +``` |
| 271 | +detail = richTextField(verbose_name="课程详情") |
| 272 | +``` |
| 273 | + |
| 274 | + |
| 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 | + |
| 287 | + |
| 288 | +### ImageField 自动生成带预览的表单上传功能,列表页可选两种展示方式。 |
| 289 | + |
| 290 | +```python |
| 291 | +avatar = ImageField(verbose_name="头像") # 变量名为avatar或logo的会自动为头像样式 |
| 292 | +image = ImageField(verbose_name="封面图") |
| 293 | +``` |
| 294 | + |
| 295 | + |
| 296 | + |
| 297 | + |
| 298 | + |
| 299 | + |
| 300 | + |
| 301 | +### FileField 字段生成文件上传功能。 |
| 302 | + |
| 303 | +``` |
| 304 | +download = FileField(verbose_name="资源文件") |
| 305 | +``` |
| 306 | + |
| 307 | + |
| 308 | + |
| 309 | +### TextField 自动生成前端TextArea 框 |
| 310 | + |
| 311 | +```python |
| 312 | +desc = TextField(verbose_name="课程描述") |
| 313 | +``` |
| 314 | + |
| 315 | + |
| 316 | + |
| 317 | +### BooleanField 自动前端 Boolean 单选 |
| 318 | + |
| 319 | +```python |
| 320 | +is_banner = BooleanField(verbose_name="是否轮播") |
| 321 | +``` |
| 322 | + |
| 323 | + |
| 324 | + |
| 325 | +### IntegerField 自动前端 Int 输入框 |
| 326 | +``` |
| 327 | +learn_times = IntegerField(verbose_name="学习时长(分钟数)") |
| 328 | +``` |
| 329 | + |
| 330 | + |
| 331 | +### DateField 自动前端 Date选择框 |
| 332 | + |
| 333 | +``` |
| 334 | +birthday = DateField(verbose_name="生日") |
| 335 | +``` |
| 336 | + |
| 337 | + |
| 338 | +### DateTimeField 自动表单 DateTime 选择框,时间范围筛选器。 |
| 339 | + |
| 340 | +``` |
| 341 | +last_login = DateTimeField(verbose_name="上次登录") |
| 342 | +``` |
| 343 | + |
| 344 | + |
| 345 | + |
| 346 | +>注意设置了default,auto_now的不会出现在表单 |
| 347 | +
|
| 348 | + |
| 349 | + |
0 commit comments