简体   繁体   中英

django - urlpatterns giving 404 error for defined URLs

I have an application running on django. But I am getting error code 404 for some urls even though these are defined.

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/ works fine but curl http://localhost:9999/internal/nag/kom-status/ and nag/secret-key fir 404 errror.

Not Found

The requested resource was not found on this server.

I am not sure what is it that I am missing.

Note : App was recently updated from DJango 1.8 to 1.11 and djangorestframework 3.2.5 to 3.5.3. Before that it was working fine.

For debugging purpose I am just returning success response right now.

from django.http import HttpResponse

def check_secret_key(request):
    r = HttpResponse("I am good", content_type='text/plain', status=200)
    return r

well, your definition should be something like

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

also you need to provide /internal url definition.

I found the issue. Application is using two wsgi.py for running django apps.

Both wsgi.py files were using

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "it.settings.prod")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "nt.settings.prod")

Changing it to

os.environ["DJANGO_SETTINGS_MODULE"] = "it.settings.prod"
os.environ["DJANGO_SETTINGS_MODULE"] = "nt.settings.prod"

resolved the problem.

Took reference from https://docs.djangoproject.com/en/3.1/howto/deployment/wsgi/modwsgi/

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM