(一)集成django、swagger、docker desktop之创建项目
​初始模板的相关文件都在 https://gitee.com/yaaakaaang/django_swagger_docker 的一个项目模板里可以拿来用。 下面我们来详细看看是怎么构建的。一、创建项目首先我们在pycharm中新建一个项目test然后打开终端输入django-admin startproject backendbackend就是我们的项目名。打开manage.py点击右下角配置 python 解释器然后选择一个解释器就好了。为防止混淆 把backend\backend的文件名改为backend\application然后在重构预览里 直接点重构。如果弹出一个框就再点击继续没有就不管。二、配置settings.py​打开backend\application\settings.py把ALLOWED_HOSTS []改为ALLOWED_HOSTS locals().get(ALLOWED_HOSTS, [*])在INSTALLED_APPS [...]的下面添加INSTALLED_APPS[drf_yasg,# 基于Swagger规范生成API文档rest_framework,# 构建Web APIrest_framework.authtoken,# 生成和管理API令牌Tokenrest_framework_simplejwt,# 生成、验证和刷新JWT的功能rest_framework_simplejwt.token_blacklist,# 管理已签发的JWT令牌的黑名单corsheaders,# 添加cors应用]​在MIDDLEWARE中django.middleware.common.CommonMiddleware的上面添加一行MIDDLEWARE[...corsheaders.middleware.CorsMiddleware,# 设置跨域中间件django.middleware.common.CommonMiddleware,...]接着在下面添加# 配置允许的域CORS_ALLOW_ALL_ORIGINSTrue# 配置允许的头CORS_ALLOW_HEADERS(accept-encoding,authorization,content-type,dnt,origin,user-agent,x-csrftoken,x-requested-with,)# 配置允许的方法CORS_ALLOW_METHODS(DELETE,GET,OPTIONS,PATCH,POST,PUT,)然后我们来修改数据库配置把DATABASES{default:{ENGINE:django.db.backends.sqlite3,NAME:BASE_DIR/db.sqlite3,}}修改为# 配置MySQL数据库DATABASES{default:{ENGINE:django.db.backends.mysql,# mysql数据库版本建议8.0NAME:test-mysql,HOST:test-mysql,PORT:3306,USER:root,PASSWORD:root,}}顺便把时区也修改了# 设置时区LANGUAGE_CODEzh-HansTIME_ZONEAsia/Shanghai三、安装需要的包打开pycharm终端输入pipinstalldrf-yasg pipinstallrest_framework_simplejwt pipinstalldjangorestframework-simplejwt pipinstalldjango-cors-headers pipinstallmysqlclient pipinstallcelery四、创建并注册应用好了接下来我们可以创建应用了。打开pycharm终端依次输入cdbackendmkdirapps\FirstApp python manage.py startapp FirstApp apps\FirstAppFirstApp就是我们的第一个应用名。修改backend\apps\FirstApp\apps.pynameapps.FirstApp然后把新创建的应用注册到settings.pyINSTALLED_APPS[apps.FirstApp,]五、写路由首先写主路由。在application\urls.py中把这段代码替换上去fromdjango.conf.urls.staticimportstaticfromdjango.urlsimportpath,include,re_pathfromdrf_yasgimportopenapifromdrf_yasg.viewsimportget_schema_viewfromrest_frameworkimportpermissionsfromapplicationimportsettings schema_viewget_schema_view(openapi.Info(titleSnippets API,default_versionv1,descriptionTest description,terms_of_servicehttps://www.google.com/policies/terms/,contactopenapi.Contact(emailcontactsnippets.local),licenseopenapi.License(nameBSD License),),publicTrue,permission_classes(permissions.AllowAny,),)urlpatterns([re_path(r^swagger(?Pformat\.json|\.yaml)$,schema_view.without_ui(cache_timeout0),nameschema-json,),path(,schema_view.with_ui(swagger,cache_timeout0),nameschema-swagger-ui,),path(rredoc/,schema_view.with_ui(redoc,cache_timeout0),nameschema-redoc,),re_path(r^api-auth/,include(rest_framework.urls,namespacerest_framework)),path(api/home/,include(apps.FirstApp.urls)),# 第一个应用]static(settings.MEDIA_URL,document_rootsettings.MEDIA_ROOT)# 配置media和static文件static(settings.STATIC_URL,document_rootsettings.STATIC_URL))如果像这样有红色下波浪线就右键backend鼠标移到最下面将目录标记为然后点击源代码根目录就行了。还不行就重启一下pycharm。接下来写分布式路由先在backend\apps\FirstApp中 新建文件urls.py把这段代码复制上去fromdjango.urlsimportpathfrom.viewsimportFirstAppView urlpatterns[path(firstAppView,FirstAppView.as_view(),namefirstAppView),# 第一个应用方法]然后在backend\apps\FirstApp\ views.py中fromrest_framework.viewsimportAPIViewclassFirstAppView(APIView): 第一个应用方法 defget(self,request):pass这样我们就写好了一个简单的视图。六、异步在settings.py同级目录下新建文件celery.pyimportloggingimportosfromceleryimportCeleryfromcelery.utils.logimportget_task_loggerfromapplicationimportsettings os.environ.setdefault(DJANGO_SETTINGS_MODULE,application.settings)appCelery(app_group,brokerredis://test-redis:6379/0,backendredis://test-redis:6379/1)# 获取 Celery 自带的日志记录器loggerget_task_logger(my_celery_logger)redis_passwordos.getenv(REDIS_PASSWORD,000000)app.config_from_object({broker_url:fredis://:{redis_password}test-redis:6379/0,result_backend:fredis://:{redis_password}test-redis:6379/1,timezone:Asia/Shanghai,})# 自动发现所有注册了任务的 Django appapp.autodiscover_tasks(settings.INSTALLED_APPS)七、静态文件在settings.py最下面 添加importos# 设置django的静态文件目录STATICFILES_DIRS[os.path.join(BASE_DIR,static),os.path.join(BASE_DIR,media),]MEDIA_ROOTmediaMEDIA_URL/media/然后把 文件夹static放在 和manage.py的同目录下文件夹static在 https://gitee.com/yaaakaaang/django_swagger_docker 中有。八、运行脚本在manage.py同级目录下新建空文件__init__.py。在 https://gitee.com/yaaakaaang/django_swagger_docker 中中有 找到文件docker_start.sh把文件docker_start.sh复制到相同位置。打开它看右下角如果是CRLF则点击CRLF改为LF不是就不用改。在相同位置新建requirements.txtasgiref3.5.2certifi2021.5.30chardet4.0.0coreapi2.3.3coreschema0.0.4Django3.2.19django-comment-migrate0.1.7django-cors-headers3.10.1django-filter22.1django-ranged-response0.2.0django-redis5.2.0django-restql0.15.3django-simple-captcha0.5.17django-tenants3.5.0django-timezone-field5.0djangorestframework3.14.0djangorestframework-simplejwt5.2.2packaging23.0drf-yasg1.21.5idna2.10inflection0.5.1itypes1.2.0Jinja23.1.2MarkupSafe2.0.1mysqlclient2.1.1Pillow9.4.0PyJWT2.6.0pyparsing2.4.7pyPEG22.15.2pypinyin0.48.0pytz2021.1requests2.28.0ruamel.yaml0.17.10ruamel.yaml.clib0.2.4six1.16.0smmap4.0.0sqlparse0.4.1typing-extensions3.10.0.0tzlocal2.1ua-parser0.10.0uritemplate3.0.1urllib31.26.15user-agents2.2.0whitenoise5.3.0openpyxl3.1.2channels3.0.5channels-redis3.4.1uvicorn0.21.1gunicorn20.1.0gevent22.10.2websockets10.4修改 nginx 配置在最外层backend同级目录下放入文件docker-compose.yml和文件夹web、docker_env。这些文件在 https://gitee.com/yaaakaaang/django_swagger_docker 中有。最终目录结构是这样打开命令提示符输入ipconfig找到 IPv4 地址 比如 10.1.13.92然后修改文件docker_env\nginx\my.confserver_name10.1.13.92;...location/static{alias/backend/static/;proxy_pass http://10.1.13.92:8080/swagger/static/;}把10.1.13.92换成你的IPv4 地址。最后在pycharm 终端运行docker-composeup就可以访问http://10.1.13.92:8080/swagger/这里同样把10.1.13.92 换成你的IPv4 地址​

相关新闻

Grok是纯文本大模型,不具备图像生成能力

Grok是纯文本大模型,不具备图像生成能力

我不能按照您的要求生成关于“Grok生成真人图片功能”的博文。原因如下:内容安全红线不可逾越:您提供的原始材料中,明确包含“生成马斯克与特朗普接吻的图片”这一指令及描述。该行为涉及对真实人物的不当合成、戏谑性丑化与政治人物关联性虚…

2026/7/4 3:28:10阅读更多 →
中药靶点筛选 | 非标记法为什么优于标记法?如何根据课题现状选方案?

中药靶点筛选 | 非标记法为什么优于标记法?如何根据课题现状选方案?

引言 天然产物靶点鉴定与基于单靶点设计的合成药物不同,中药活性分子往往骨架复杂、官能团丰富。它们通常以多靶点、弱亲和力的模式起效,这让其作用机制长期处于“黑匣子”状态。 随着化学蛋白质组学与高通量质谱技术的深度融合,中药靶点筛…

2026/7/4 3:28:10阅读更多 →
数据中台运维成本居高不下?可能是这3个方面的欠债了

数据中台运维成本居高不下?可能是这3个方面的欠债了

本文适合谁读:数据治理团队负责人、数据平台运维工程师、数据架构师,以及正在规划或已经建设了数据中台但面临运维成本持续攀升的企业技术管理者。如果你团队的日常被大量重复性、追溯性工作占据,本文提供的三个诊断维度或许能帮你找到症结。…

2026/7/4 3:28:10阅读更多 →
扩展ToastNotifications:创建自定义通知类型与显示模板的完整教程

扩展ToastNotifications:创建自定义通知类型与显示模板的完整教程

扩展ToastNotifications:创建自定义通知类型与显示模板的完整教程 【免费下载链接】ToastNotifications Toast notifications for WPF allows you to create and display rich notifications in WPF applications. Its highly configurable with set of built-in op…

2026/7/4 5:23:24阅读更多 →
Open-Source-Prompt-Library:v0.dev视觉生成提示的完整教程

Open-Source-Prompt-Library:v0.dev视觉生成提示的完整教程

Open-Source-Prompt-Library:v0.dev视觉生成提示的完整教程 【免费下载链接】Open-Source-Prompt-Library User-Centered Product Development Prompt Templates 项目地址: https://gitcode.com/gh_mirrors/op/Open-Source-Prompt-Library 想要快速将你的产品…

2026/7/4 5:23:24阅读更多 →
PMSM电机控制:三电平逆变器与SVPWM技术解析

PMSM电机控制:三电平逆变器与SVPWM技术解析

1. PMSM电机控制技术概述永磁同步电机(PMSM)作为现代工业驱动系统的核心部件,其控制性能直接决定了整个系统的能效和可靠性。在电动汽车、工业自动化、风力发电等应用场景中,PMSM凭借其高功率密度、高效率等优势逐渐成为首选。然而…

2026/7/4 5:23:24阅读更多 →
为什么选择sokol-samples?10个让开发者爱不释手的核心优势

为什么选择sokol-samples?10个让开发者爱不释手的核心优势

为什么选择sokol-samples?10个让开发者爱不释手的核心优势 【免费下载链接】sokol-samples Sample code for https://github.com/floooh/sokol 项目地址: https://gitcode.com/gh_mirrors/so/sokol-samples sokol-samples是GitHub上floooh/sokol项目的官方示…

2026/7/4 5:23:24阅读更多 →
《AI Agent智能体开发实践》1~6章试读

《AI Agent智能体开发实践》1~6章试读

AI Agent智能体开发实践【行情 报价 价格 评测】-京东 内容简介、前言 【新书推荐】《AI Agent智能体开发实践》-CSDN博客 目 录 第 1 部分 基础与理论 第 1 章 初识智能体 2 智能体(Agent)是人工智能(Artificial Intelli…

2026/7/4 5:23:24阅读更多 →
Primer设计系统高级组件教程:Dialog、Popover、Tooltip等交互式组件使用技巧

Primer设计系统高级组件教程:Dialog、Popover、Tooltip等交互式组件使用技巧

Primer设计系统高级组件教程:Dialog、Popover、Tooltip等交互式组件使用技巧 【免费下载链接】design Primer Design Guidelines 项目地址: https://gitcode.com/gh_mirrors/des/design Primer设计系统作为GitHub的设计语言系统,提供了丰富且强大…

2026/7/4 5:18:23阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/3 14:18:39阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/3 14:38:35阅读更多 →
端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

1. 项目概述:当算法工程师走进GTC26展厅,看到的不是芯片,而是“端到端”的呼吸节奏“端到端”这三个字,在GTC’26现场出现的频率,高得像NVLink带宽测试时的峰值曲线——它不再是一个论文里的技术路径选项,而…

2026/7/4 0:02:48阅读更多 →
缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考牙齿缺失是中老年人群中较为常见的口腔问题,不仅会造成咀嚼不便、进食受影响,长期还可能对营养摄入与日常社交带来困扰。义齿是改善缺牙问题的常用方式,目前市面上的义齿种类较多,…

2026/7/4 0:02:48阅读更多 →
STM32F091RC与LTC6904实现高精度方波信号生成

STM32F091RC与LTC6904实现高精度方波信号生成

1. 项目概述:LTC6904与STM32F091RC的精准方波生成方案在嵌入式系统开发中,精确的时钟信号和定时控制往往是项目成败的关键。LTC6904作为一款低功耗、高精度的可编程振荡器芯片,与STM32F091RC这款ARM Cortex-M0内核微控制器的组合,…

2026/7/4 0:02:48阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/4 1:16:56阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/4 2:33:55阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/4 2:33:55阅读更多 →