【问题标题】:Specifying a new template for Django Model为 Django 模型指定新模板
【发布时间】:2012-08-13 12:25:10
【问题描述】:

我一直在网上寻找解决方案,但似乎找不到有效的解决方案。

我正在尝试覆盖特定型号的默认“索引”页面。我知道您可以像这样更改项目的 url.py 文件夹中的 URL 设置:

url(r'^items/(?P<itemId>\d+)/$', 'items.views.itemDetail')

虽然上面的 URL 映射工作正常,并且 itemDetail(request) 方法被正确调用,但类似这样:

url(r'^admin/homepage/$', 'homepage.views.index'),

似乎不起作用。我知道这行不通,因为这条线:

url(r'^admin/', include(admin.site.urls))

除非我直接转到管理员/主页,否则每次尝试更改上述行的模式都会导致错误。所以默认的管理页面消失了。我只是想将默认索引模板更改为不同的东西。没有将 URL 从 XXX/admin/homepage 完全更改为其他内容,我不知道如何解决这个问题。

任何帮助将不胜感激。

【问题讨论】:

  • 为什么不起作用? URL 解析器只找到第一个匹配项;因此,无论后面的内容如何,​​任何 URL 都无法正常工作。
  • 我认为 url(r'^admin/', include(admin.site.urls)) 优先。如果我对该行进行更改,请说 url(r'^admin/$', include(admin.site.urls)) 然后 url(r'^admin/homepage/$', 'homepage.views.index' ) 确实有效。但是所有其他管理页面都死了。这意味着我必须为所有这些管理页面创建视图。
  • 我也认为只要您的自定义 url 定义出现在 urlconf (urls.py) 中的实际管理员定义之前,它就应该起作用!
  • 1000Suns,它是怎么“死”的?你有例外吗?它会引发 404 吗?
  • 我收到一条错误消息:NoReverseMatch at /admin/ Reverse for 'app_list' with arguments '()' and keyword arguments '{'app_label': 'sites'}' not found

标签: django django-models django-admin django-templates django-views


【解决方案1】:

我认为只要您的自定义 url 定义出现在 urlconf (urls.py) 中的实际管理员定义之前,它就应该起作用:

urlpatterns = patterns('',      
    ...    
    url(r'^admin/homepage/$', 'homepage.views.index'),
    ...
    url(r'^admin/', include(admin.site.urls)),
    ...
)

【讨论】:

  • 本例中不应该是url(r'^admin/homepage$' ...吗?
  • @JamesKhoury 这两种情况都应该有效。但是对于我想做的事情,上述解决方案有效。
  • @1000Suns 只是你的帖子提到去 admin/homepage 而不是 admin/homepage/ ... 看起来差别很小,但可能是一个主要问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-30
  • 2011-03-31
  • 2021-09-30
  • 2018-09-04
  • 2012-10-27
相关资源
最近更新 更多