【发布时间】:2014-05-03 15:21:41
【问题描述】:
我必须对 djangos 管理面板进行多项更改,因此我决定将 django 管理应用程序分叉到我自己的 django 项目中。
当我使用这个管理应用程序时,我认识到,站点注册和模板处理与通常在 django 中创建的应用程序不同。 例如,出于备份和安全原因,我想保留旧的管理 index.html 模板和视图,但登录页面应替换为自定义页面。
为此,我当然需要分别更改 admin/templates/index.html 和 /admin/sites.py。
我将 admin/sites.py 中的旧索引函数复制到 old_index.py 并在模板文件夹中创建了 old_index.html。
但是如果我尝试在我的新 index.html 中引用 old_index.html
<a href="{% url 'admin:old_index' %}">old index</a>
我抛出了一个 NoReverseMatch-Exception。不幸的是,我没有找到有关 django 管理应用程序本身如何注册新视图和站点的更多信息,因此示例或描述会有所帮助。
在我的项目中为不同的其他应用程序中的管理应用程序创建单独的视图并不是真正的选择,因为需要进行大量更改。
主要的urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'django_project.views.home', name='home'),
url(r'^polls/', include('other_app.urls', namespace="other_app")),
url(r'^admin/', include(admin.site.urls)),
)
管理应用程序本身不提供 urls.py 文件,views.py 与 django.contrib.admin 中的完全相同。我只是将函数索引复制到一个名为 old_index 的新函数中,引用模板 old_index。 html。
也许这一点并没有像我预期的那样清楚。我在我的项目中复制了整个管理应用程序,并希望在其中添加一个自定义站点,无论在哪里。但是我不明白站点和视图是如何在管理应用程序本身中注册的,因为这种方式与您通常在 django 中创建的自定义应用程序不同。
那么,是否可以(以及如何)在 django.contrib.admin 应用中添加自定义站点?
【问题讨论】:
-
添加更多内容会很有帮助,例如您的
urls.py(主要和应用程序)和可能的views.py。你能把它粘贴进去吗?