【问题标题】:Django-nested-admin urls not loadingDjango-nested-admin url 未加载
【发布时间】:2015-07-06 19:33:14
【问题描述】:

我正在尝试让任何类型的嵌套内联与 python 3 和 django 1.8 一起使用。

我尝试了 django 超级内联,但这并没有真正使它们嵌套,它们只是出现在彼此旁边。

我目前正在尝试使用 django-nested-admin,但使用此模式搜索时出现页面未找到错误:

^ ^$ [name='浏览']

^admin/ ^server-data.js$ [name='nesting_server_data']

浏览指向一组单独 url 的链接,这不会加载任何管理链接。

urls.py:

from django.conf.urls import include, url
import nested_admin

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

连接到 /admin/ 时出现 404 not found 错误。

任何有关页面未加载原因的帮助或任何使嵌套内联工作的更好方法将不胜感激。

【问题讨论】:

    标签: python django


    【解决方案1】:

    模式r'^' 将匹配任何也匹配r'^admin/' 的东西。 Django 从urlpatterns 的开头开始执行 URL 匹配,并不断进行直到找到 first 匹配。因此,在这种情况下,应该在 admin 中的内容与 '^' 匹配,即 flightdb.urls 将无法找到它们。您可以通过重新排序网址来解决此问题,如下所示:

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

    现在在其他顶级 URL 之前检查 admin 是否匹配。

    编辑:我怀疑您的问题来自于在您的 url 模式中使用“admin”以转到默认 Django 管理包以外的其他地方。我在django-nested-admin 的源代码中进行了一些搜索,特别是在这里遇到了一些东西: https://github.com/theatlantic/django-nested-admin/blob/master/nested_admin/options.py 特别看看第 275 行:

        context = {
            'title': _('Add %s') % force_unicode(opts.verbose_name),
            'adminform': adminForm,
            'is_popup': (IS_POPUP_VAR in request.POST or
                         IS_POPUP_VAR in request.GET),
            'show_delete': False,
            'media': mark_safe(media),
            'inline_admin_formsets': inline_admin_formsets,
            'errors': helpers.AdminErrorList(form, formsets),
            'root_path': reverse('admin:index'),
            'app_label': opts.app_label,
        }
    

    这里有一个电话给reverse('admin:index')。这需要解析为通常的admin 路径才能工作。当你像你一样定义你的 url 时,你会遇到 admin 现在不是 django-nested-admin 期望看到的默认值的问题。

    也许尝试另一种不是“管理员”的 url 模式,例如他们的文档中建议的模式:

    url(r'^nested_admin/', include('nested_admin.urls')),
    

    这样 django-nested-admin 包内部使用的reverse 就可以工作了。

    【讨论】:

    • 仍然没有帮助。我收到未找到页面 (404) 错误,因此它检查了所有 url,但无法找到正确的。我假设我在使用 django-nested-admin 包时做错了。很抱歉最初没有正确解释。
    • 您是否在settings.py 文件中注册了该软件包?此外,您真的应该编辑问题以在此处包含包详细信息,这是高度相关的。
    • 我确实将包放在了我的 settings.py 文件中,并提到我在帖子中使用了 django-nested-admin。
    • 啊,404 只是我需要深入研究的提示。检查我的编辑,希望这能解决您的问题。
    • 我仍然收到 404 错误,它说它搜索了这个 url:^nested_admin/ ^server-data\.js$ [name='nesting_server_data']
    【解决方案2】:

    我遇到了同样的问题。这就是我的 settings.py 和 urls.py 的样子

    settings.py

    INSTALLED_APPS = [
        'nested_admin',
        'django.contrib.admin',
        # ...
    ]
    

    urls.py

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

    现在,不要访问 yourproject.com/nested_admin,而是访问 yourproject.com/admin

    您仍然需要包含 nested_admin 否则它将不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-25
      • 2013-05-09
      • 1970-01-01
      • 2016-12-09
      • 2020-11-16
      • 2016-12-11
      相关资源
      最近更新 更多