【问题标题】:Django admin page 404Django 管理页面 404
【发布时间】:2017-06-01 18:58:11
【问题描述】:

当我尝试导航到我的 django 应用程序的管理部分时,我收到一个未找到的错误:

项目/urls.py

from django.conf.urls import include, url
from django.contrib   import admin
from app.views import View1, View2
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^$', View1.as_view(), name="view_1"),
    url(r'^another_view/(?P<pk>\d+)$', View2.as_view(), name="view_2"),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

app/urls.py

from django.conf.urls import include, url
from django.contrib   import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    (r'^/', include('project.urls')),
]

项目/settings.py

....
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'app/static'),)

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
MEDIAFILES_DIRS = ( os.path.join(BASE_DIR, 'app/media'),)
....

当我尝试导航到 localhost:8000/admin 时,我收到以下错误:

Page Not Found (404)

Using the URLconf defined in app.urls, Django tried these URL patterns, in this order:
^$ [name='view_1']
^another_view$ [name='view_2']
^media\/(?P<path>.*)$
The current URL, admin, didn't match any of these.

【问题讨论】:

标签: python django admin


【解决方案1】:

您的应用程序和项目网址弄错了。

项目 url 应包含管理员的映射,并包含应用程序 url;反过来,应用 url 应包含应用视图的特定映射。

静态的东西应该仍然在项目的 urls 中;虽然在任何情况下你都不应该需要它。

【讨论】:

  • 我不确定我是否正确地标记了它们,但是将它们轮流切换是行不通的;所有其他 URL 都照常工作。如果我切换它们,我会得到:您的 URL 模式 ('^/', (, None, None)) 无效。确保 urlpatterns 是 url() 实例的列表。
  • 因为你需要用url() 包裹第二个模式,就像所有其他模式一样。
  • 如果我切换它们并添加 url(),当我导航到 localhost:8000(之前将我带到主页)时,我现在得到一个 404:使用项目中定义的 URLconf。 urls,Django 尝试了这些 URL 模式,顺序如下:^admin/ ^/
  • 啊,那个模式也应该是r'^$';不需要斜线。
  • 啊,我真的很抱歉,那应该是r''。当您在基本路径中包含内容时,您根本不需要任何模式。