我必须在djangos管理面板中包含多项更改,因此我决定将django管理应用程序分配到我自己的django项目中。
当我使用这个管理员应用程序时,我认识到,网站注册和模板处理与通常在django中创建的应用程序不同。 例如,出于备份和安全原因,我希望保留旧的admin 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应用程序中添加自定义网站?
答案 0 :(得分:1)
我认为您需要为自定义目的创建自己的AdminSite,并保持默认状态。有关详细信息,请访问:https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#adminsite-objects和https://docs.djangoproject.com/en/dev/ref/contrib/admin/#multiple-admin-sites-in-the-same-urlconf
<强>更新强>
您需要编辑AdminSite类的get_urls方法 - 添加:
url(r'^$', wrap(self.old_index), name='old_index')
到urlpatterns变量。并将旧索引方法重命名为old_index。