python - django - urlpatterns 为定义的 URL 提供 404 错误
问题描述
我有一个在 django 上运行的应用程序。但是,即使已定义某些 url,我也会收到错误代码 404。
from .views import check_secret_key # a function in views.py
from .swagger_schema import SwaggerSchemaView # a class inheriting APIView
from .kom.kom_writer import kom_status # a function
from django.conf.urls import url
urlpatterns = [
url(r'^docs/api-docs/', SwaggerSchemaView.as_view()),
url(r'^nag/secret-key/', check_secret_key),
url(r'^nag/kom-status/', kom_status),
]
APIcurl http://localhost:9999/internal/docs/api-docs/
工作正常,但curl http://localhost:9999/internal/nag/kom-status/
出现nag/secret-key
404 错误。
未找到
在此服务器上找不到请求的资源。
我不确定我错过了什么。
注意:应用程序最近从 DJango 1.8 更新到 1.11 和 djangorestframework 3.2.5 到 3.5.3。在此之前它工作正常。
出于调试目的,我现在只是返回成功响应。
from django.http import HttpResponse
def check_secret_key(request):
r = HttpResponse("I am good", content_type='text/plain', status=200)
return r
解决方案
我发现了这个问题。应用程序正在使用两个 wsgi.py 来运行 django 应用程序。
两个wsgi.py文件都在使用
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "it.settings.prod")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nt.settings.prod")
将其更改为
os.environ["DJANGO_SETTINGS_MODULE"] = "it.settings.prod"
os.environ["DJANGO_SETTINGS_MODULE"] = "nt.settings.prod"
解决了这个问题。
参考https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/modwsgi/
推荐阅读
- java - 从我使用 switch 的方法中获取二维数组
- php - 获取两个数字之间的百分比
- python - 无法获得 app_installations 方法的授权
- c - 外部链接内联函数定义是否需要“extern”?
- jquery - 如何在仅触摸浏览器中激活 CSS :hover 事件?
- node.js - Node.Js 似乎忽略了随机执行的 await 关键字
- highcharts - 如何使用不规则数据设置highchart热图的colsize
- azure - EF Core Cosmos 3.1.3 额外调用
- html - 如何使用ui元素在行中居中图标
- c - 我了解到在 C 语言中 char 类型的范围是 -128 到 127,但看起来不是这样