簡體   English   中英

django - urlpatterns 為定義的 URL 提供 404 錯誤

[英]django - urlpatterns giving 404 error for defined URLs

我有一個在 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),
]

API curl http://localhost:9999/internal/docs/api-docs/工作正常,但curl http://localhost:9999/internal/nag/kom-status/nag/secret-key fir 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

好吧,你的定義應該是這樣的

urlpatterns = [
    url(r'.*docs/api-docs/', SwaggerSchemaView.as_view()),
    url(r'.*nag/secret-key/', check_secret_key),
    url(r'.*nag/kom-status/', kom_status),
]

您還需要提供/internal url 定義。

我發現了這個問題。 應用程序使用兩個 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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM