{"id":13597894,"url":"https://github.com/mtianyan/django-react-tyadmin","last_synced_at":"2026-01-12T13:04:29.422Z","repository":{"id":37404268,"uuid":"302702237","full_name":"mtianyan/django-react-tyadmin","owner":"mtianyan","description":"支持Python3.9,Django4! 类似 xadmin 的基于Model 快速生成前后台管理增删改查，筛选，搜索的后台管理自动化工具。Antd 界面好看现代化！前后端分离！无损二次开发！由Django Restful Framework 和 Ant Design Pro V4 驱动","archived":false,"fork":false,"pushed_at":"2024-04-08T08:32:02.000Z","size":43139,"stargazers_count":900,"open_issues_count":28,"forks_count":199,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-10T05:41:02.313Z","etag":null,"topics":["admin","antd-design-pro","antdesign","django","django-admin","django-rest-framework","drf","generator","nocode","python3","react","xadmin"],"latest_commit_sha":null,"homepage":"https://tyadmin.funpython.cn/xadmin","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mtianyan.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-09T16:53:49.000Z","updated_at":"2025-04-10T01:15:32.000Z","dependencies_parsed_at":"2024-06-19T16:02:57.856Z","dependency_job_id":"9f09d6ae-c1ce-4b14-b70b-005d691f2ad9","html_url":"https://github.com/mtianyan/django-react-tyadmin","commit_stats":null,"previous_names":["mtianyan/tyadmin_api_cli"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mtianyan/django-react-tyadmin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mtianyan%2Fdjango-react-tyadmin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mtianyan%2Fdjango-react-tyadmin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mtianyan%2Fdjango-react-tyadmin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mtianyan%2Fdjango-react-tyadmin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mtianyan","download_url":"https://codeload.github.com/mtianyan/django-react-tyadmin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mtianyan%2Fdjango-react-tyadmin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338991,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["admin","antd-design-pro","antdesign","django","django-admin","django-rest-framework","drf","generator","nocode","python3","react","xadmin"],"created_at":"2024-08-01T17:00:42.978Z","updated_at":"2026-01-12T13:04:29.392Z","avatar_url":"https://github.com/mtianyan.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# TyAdmin: Django 基于Models 的 **No Code** 零代码零学习成本管理后台前后端生成工具, 由Django Restful Framework 和 Ant Design Pro V4 驱动\n\n![](https://img.shields.io/pypi/v/tyadmin-api-cli)\n![](https://img.shields.io/pypi/wheel/tyadmin-api-cli)\n\n支持Python3.9! 不限Django版本支持，支持最新Django4！支持Django3！\n\n# 🎬 在线体验Demo\n\n\u003e账号: tyadmin 密码: tyadmin\n\n~~演示地址: https://tyadmin.funpython.cn/xadmin~~\n\n**No Code!!! 一行代码都不写，就能拥有的现代化后台管理, 动动小手，**star**一下，感谢！！**\n\nTyAdmin: 只需要花五分钟阅读README即可快速上手，无额外文档，无框架学习成本，不用自己写一行代码，全自动的后台，你值得拥有！\n\n# ✨ 特性\n\n- 自动生成前后端管理后台，页面接口神奇全自动对接。登录验证，修改密码，Dashboard数据统计。\n- 一次拥有 **增删改查，筛选，搜索，数据全量导出，选择导出** \n- **外键字段，多对多字段，富文本，文件，图片，django自带权限系统**\n\n只需要设计好Model，在settings中配置需要生成哪些model，运行命令: [快速上手](#快速上手) \n\n\u003e后端生成一个django app到项目目录, 只需注册一下， 无需再写一行代码！ 代码归你掌控，无阻二次开发！\n\u003e前端生成一个Ant Design Pro V4项目，只需启动一次，无需再写一行代码！ 代码归你掌控，无阻二次开发！\n\n前端页面，后端接口，路由，菜单全部自动对接,你只需要拷贝文档，修改配置，不需要写一行代码！！\n\n# 🎁 内置\n\n## 1. 多种登录方式\n\n![](http://cdn.pic.funpython.cn/blog_img/20201130234228.png)\n\n## 2. 内嵌自动dashboard，自动注册现有model count 数据。\n\n![](http://cdn.pic.funpython.cn/blog_img/20201130234054.png)\n\n## 3. 全自动的列表展示，增删改查， 筛选，搜索，导出Excel\n\n![](http://cdn.pic.funpython.cn/blog_img/20201130234448.png)\n\n![](http://cdn.pic.funpython.cn/blog_img/20201130234525.png)\n\n## 4. django自带权限组支持，外键蓝点小标记pop支持\n\n![](http://cdn.pic.funpython.cn/blog_img/20201130234705.png)\n\n![](http://cdn.pic.funpython.cn/blog_img/20201130234753.png)\n\n## 5. 基于Model定义的表单字段级别自动验证\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010194705.png)\n\n## 6. 内嵌富文本支持,仅需把字段定义为`richTextField`,无需任何额外集成。\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010192630.png)\n\n# 快速上手🤟 \n\n📨 互动交流反馈QQ群: 304094780\n\n\u003e已有项目可从第二步开始，注意修改GEN_APPS 变量为自己需要生成的app列表\n\u003e如有问题，可对比demos下tyadmin_demo_finish项目找自己的不同,以及查看[QA环节](#QA环节)\n\n## 1. 下载demo项目安装依赖(注意！！已有项目不需要下载demo项目可从第二步开始，注意修改GEN_APPS 变量为自己需要生成的app列表)\n\n```\ngit clone https://github.com/mtianyan/tyadmin_api_cli.git\ncd tyadmin_api_cli/demos/tyadmin_demo_init\n# 安装项目 原本就需要的依赖\npip install -r requirement.txt\n```\n\n## 2. 安装tyadmin-api-cli并注册tyadmin-api-cli\n\n```diff\npip install tyadmin-api-cli\n\nINSTALLED_APPS = [\n+    'captcha',\n+    'tyadmin_api_cli',\n]\n\n+TY_ADMIN_CONFIG = {\n+    'GEN_APPS': ['demo']\n+}\n\n# 方便拷贝\n\n    'captcha',\n    'tyadmin_api_cli',\n\nTY_ADMIN_CONFIG = {\n    'GEN_APPS': ['demo']\n}\n```\n\nGEN_APPS: 填写你想要生成的app列表。 \n\n## 3. 初始化 后端app(tyadmin_api) + 前端项目(tyadmin)  \u0026\u0026 生成后端自动化的视图，过滤器，路由，序列器 + 前端页面及路由菜单\n\n生成后端页面依赖，需安装Node.js -\u003e https://www.runoob.com/nodejs/nodejs-install-setup.html\n\n\u003e安装Node.js 10以上，推荐安装版本Latest LTS Version: 12.19.0\n\n```\npython manage.py init_admin \u0026\u0026 python manage.py gen_all \u0026\u0026 cd tyadmin \u0026\u0026 npm install \u0026\u0026 npm run build\n```\n\n\u003e耐心等待一会，build 会输出 前端页面到templates文件夹，生成前端js,css 等到static文件夹\n\n## 4. 注册生成出的django app\n\n```diff\nINSTALLED_APPS = [\n    'captcha',\n    'tyadmin_api_cli',\n+   'tyadmin_api'\n]\n\n# 方便拷贝\n\n'tyadmin_api'\n```\n\n## 5. 注册首页路由，api路由\n\n./tyadmin_demo/urls.py\n\n```diff\n+ from tyadmin_api.views import AdminIndexView\n\nurlpatterns = [\n+    re_path('^xadmin/.*', AdminIndexView.as_view()),\n+    path('api/xadmin/v1/', include('tyadmin_api.urls')),\n]\n\n# 方便拷贝\nfrom tyadmin_api.views import AdminIndexView\n\nre_path('^xadmin/.*', AdminIndexView.as_view()),\npath('api/xadmin/v1/', include('tyadmin_api.urls')),\n```\n\n## 6. 运行项目\n\n```\npython manage.py makemigrations\npython manage.py migrate\npython manage.py createsuperuser # 创建一个可以登入后台的用户\npython manage.py runserver # 默认运行在8000端口\n```\n\n访问http://127.0.0.1:8000/xadmin/ 输入刚才创建的用户名密码登录\n\n至此大功告成！\n\n\u003e如果没有成功看到页面，请查看QA部分\n\n# QA环节\n\n## 0. `TemplateDoesNotExist at /xadmin/ TyAdmin/index.html`\n\nsettings.py 中配置templates 路径\n\n```diff\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n-        'DIRS': [],\n+        'DIRS': [os.path.join(BASE_DIR, 'templates')],\n```\n## 1. 卡在loading页面，一直无法登陆\n\nsettings.py 中配置static 路径\n\n```\nif DEBUG:\n    STATICFILES_DIRS = [\n        os.path.join(BASE_DIR, \"static\"),\n    ]\nelse:\n    STATIC_ROOT = os.path.join(BASE_DIR, 'static')\n```\n\n## 2. 图片没有正常显示\n\nurls.py \n\n```\nfrom django.views.static import serve\n\nurlpatterns = [\nre_path('media/(?P\u003cpath\u003e.*)', serve, {\"document_root\": settings.MEDIA_ROOT}),\n]\n```\n\n## 3. 当项目新增了model，我该如何为新model生成前端页面+后端接口\n\n```diff\n+TY_ADMIN_CONFIG = {\n+    'GEN_APPS': ['demo','new_app']\n+}\n```\n如上GEN_APPS 中添加新app的name，然后运行下面命令\n\n```\npython manage.py gen_all \u0026\u0026 cd tyadmin \u0026\u0026 npm run build\n```\n\n## 4. 项目修改了model，重新生成页面为何不生效\n\n\u003e 为防止你对已生成前端进行的二次开发被覆盖，默认是不强制覆盖已生成的前端。如果需要重新生成，请添加如下配置 FORCED_COVER\n\n```diff\nTY_ADMIN_CONFIG = {\n    'FORCED_COVER': True,\n    'GEN_APPS': ['demo']\n}\n```\n\n## 5. 如何运行生成的前端独立项目\n\n```\ncd tyadmin\nnpm install\nnpm run start:dev # 默认会运行在8001端口\n```\n\n请确认django运行在8000端口，访问 http://127.0.0.1:8001/xadmin/\n\n# 🤝 贡献者名单:\n\n[longyn](https://github.com/longyn)\n\n# 🤟 打赏\n\n很高兴我的项目代码或许对你有帮助，请我吃包辣条或喝瓶可乐吧!\n\n微信打赏:\n\n![mark](http://myphoto.funpython.cn/blog/180302/i52eHgilfD.png?imageslim)\n\n# 🔑 License\n\n[MIT](https://github.com/go-admin-team/go-admin/blob/master/LICENSE.md)\n\nCopyright (c) 2020 mtianyan\n\n\n# 附录\n\n## model-\u003e前端对应关系\n\n|  字段类型   | 前端展示  |\n|  ----  | ----  |\n| ForeignKey  | 单选 |\n| ManyToManyField  | 多选 \u0026 多彩标签展示 |\n| richTextField  | 富文本展示 |\n| CharField or IntegerField(with choices)  | 多选 |\n| CharField or IntegerField  | 输入框 |\n| ImageField  | 带预览上传，可选头像，图片列表展示 |\n| FileField  | 文件上传 |\n| TextField  | TextArea框 |\n| BooleanField | Switch选择|\n| IntegerField | 数字input|\n| DateField| Date选择器|\n| DateTimeField| DateTime选择器|\n\n### ForeignKey自动生成下拉单选菜单, ManyToManyField自动生成下拉多选菜单或穿梭框\n\n![](http://cdn.pic.funpython.cn/blog_img/20201202214922.png)\n\n![](http://cdn.pic.funpython.cn/blog_img/20201202214936.png)\n\n![](http://cdn.pic.funpython.cn/blog_img/20201202214957.png)\n\n### richTextField 自动生成富文本\n\n```\ndetail = richTextField(verbose_name=\"课程详情\")\n```\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010193352.png)\n\n### CharField和IntegerField choices 自动生成表单前端下拉选择框。\n\n```python\nGENDER_CHOICES = (\n   (\"male\", \"男\"),\n   (\"female\", \"女\")\n)\ngender = CharField(verbose_name=\"性别\",choices=GENDER_CHOICES)\n```\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010190635.png)\n\n### ImageField 自动生成带预览的表单上传功能，列表页可选两种展示方式。\n\n```python\navatar = ImageField(verbose_name=\"头像\") # 变量名为avatar或logo的会自动为头像样式\nimage = ImageField(verbose_name=\"封面图\")    \n```\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010191641.png)\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010191917.png)\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010191843.png)\n\n### FileField 字段生成文件上传功能。\n\n```\ndownload = FileField(verbose_name=\"资源文件\")\n```\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010193041.png)\n\n### TextField 自动生成前端TextArea 框\n\n```python\ndesc = TextField(verbose_name=\"课程描述\")\n```\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010192813.png)\n\n### BooleanField 自动前端 Boolean 单选\n\n```python\nis_banner = BooleanField(verbose_name=\"是否轮播\")\n```\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010193001.png)\n\n### IntegerField 自动前端 Int 输入框\n```\nlearn_times = IntegerField(verbose_name=\"学习时长(分钟数)\")\n```\n![](http://cdn.pic.funpython.cn/blog_img/20201010193445.png)\n\n### DateField 自动前端 Date选择框\n\n```\nbirthday = DateField(verbose_name=\"生日\")\n```\n![](http://cdn.pic.funpython.cn/blog_img/20201010193614.png)\n\n### DateTimeField 自动表单 DateTime 选择框，时间范围筛选器。\n\n```\nlast_login = DateTimeField(verbose_name=\"上次登录\")\n```\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010193852.png)\n\n\u003e注意设置了default，auto_now的不会出现在表单\n\n![](http://cdn.pic.funpython.cn/blog_img/20201010195116.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmtianyan%2Fdjango-react-tyadmin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmtianyan%2Fdjango-react-tyadmin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmtianyan%2Fdjango-react-tyadmin/lists"}