我有一个运行 Python 3.8.10 的 Django 2.2 应用程序。尝试研究和调试与 url 相关的令人困惑的问题。
基本上我们有
/org
网址:
from django.conf.urls import include, url
from django.urls import reverse_lazy
from django.views.generic.base import RedirectView
from . import views
urlpatterns = [
url(r'^', include("project.urls")),
url(r'^$', views.frontpage, name="frontpage"),
url(r'^org/submit/$', views.org_create_new, name="org-create-new"),
url(r'^org/(?P<slug>[-\w]+)$', views.org),
# redirect traffic that doesn't match a url to root home
url(r'^.*$', RedirectView.as_view(url=reverse_lazy('frontpage')), name='home'),
]
和
project
网址
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^accounts/', include('allauth.urls')),
url(r'^manage/', include('management.urls')),
url(r'^', include('users.urls')),
url(r'^', include('common.urls')),
url(r'^', include('products.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
此配置在本地运行良好,没有任何问题。但是,当我们部署应用程序(到 AWS EC2)时,
org.urls
和 management.urls
不起作用,但其余的 url 可以。可以访问 Django admin,common.urls
和 users.urls
服务很好,但是例如对“首页”视图的 GET 请求只会返回 404 Not Found
。没有错误信息。
如果我进入 EC2 实例并运行
python manage.py show_urls
我看到所有的 url,包括返回 404 Not Found 的那些:
/ orgs.views.all.frontpage frontpage
/.* django.views.generic.base.RedirectView home
如果我进入服务器托管应用程序的 python shell,我还可以反转丢失的 url:
(InteractiveConsole)
>>> from django.urls import reverse
>>> reverse('frontpage')
'/'
>>> reverse('admin-dashboard')
'/manage/dashboard/'
为什么在发出请求时无法发现这些网址?我们的网址配置是否有错误?关于如何进一步调试的任何建议?谢谢