|
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 | +# 🤟 快速上手 |
| 17 | + |
16 | 18 | 📨 互动交流反馈QQ群: 304094780 |
17 | 19 |
|
18 | 20 | [快速上手](#快速上手) |
@@ -148,4 +150,204 @@ path('api/xadmin/v1/', include('tyadmin_api.urls')), |
148 | 150 | ## 6. 运行项目 |
149 | 151 |
|
150 | 152 | ``` |
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 | + |
| 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 | + |
| 267 | + |
| 268 | + |
| 269 | + |
| 270 | + |
| 271 | + |
| 272 | +### richTextField 自动生成富文本 |
| 273 | + |
| 274 | +``` |
| 275 | +detail = richTextField(verbose_name="课程详情") |
| 276 | +``` |
| 277 | + |
| 278 | + |
| 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 | + |
| 291 | + |
| 292 | +### ImageField 自动生成带预览的表单上传功能,列表页可选两种展示方式。 |
| 293 | + |
| 294 | +```python |
| 295 | +avatar = ImageField(verbose_name="头像") # 变量名为avatar或logo的会自动为头像样式 |
| 296 | +image = ImageField(verbose_name="封面图") |
| 297 | +``` |
| 298 | + |
| 299 | + |
| 300 | + |
| 301 | + |
| 302 | + |
| 303 | + |
| 304 | + |
| 305 | +### FileField 字段生成文件上传功能。 |
| 306 | + |
| 307 | +``` |
| 308 | +download = FileField(verbose_name="资源文件") |
| 309 | +``` |
| 310 | + |
| 311 | + |
| 312 | + |
| 313 | +### TextField 自动生成前端TextArea 框 |
| 314 | + |
| 315 | +```python |
| 316 | +desc = TextField(verbose_name="课程描述") |
| 317 | +``` |
| 318 | + |
| 319 | + |
| 320 | + |
| 321 | +### BooleanField 自动前端 Boolean 单选 |
| 322 | + |
| 323 | +```python |
| 324 | +is_banner = BooleanField(verbose_name="是否轮播") |
| 325 | +``` |
| 326 | + |
| 327 | + |
| 328 | + |
| 329 | +### IntegerField 自动前端 Int 输入框 |
| 330 | +``` |
| 331 | +learn_times = IntegerField(verbose_name="学习时长(分钟数)") |
| 332 | +``` |
| 333 | + |
| 334 | + |
| 335 | +### DateField 自动前端 Date选择框 |
| 336 | + |
| 337 | +``` |
| 338 | +birthday = DateField(verbose_name="生日") |
| 339 | +``` |
| 340 | + |
| 341 | + |
| 342 | +### DateTimeField 自动表单 DateTime 选择框,时间范围筛选器。 |
| 343 | + |
| 344 | +``` |
| 345 | +last_login = DateTimeField(verbose_name="上次登录") |
| 346 | +``` |
| 347 | + |
| 348 | + |
| 349 | + |
| 350 | +>注意设置了default,auto_now的不会出现在表单 |
| 351 | +
|
| 352 | + |
| 353 | + |
0 commit comments