当我们可以通过在urls.py中的views.py和urls中添加视图时,是否需要在ModelAdmin类的管理页面中添加自定义视图?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我们可以通过在urls.py中的views.py和urls中添加视图时,是否需要在ModelAdmin类的管理页面中添加自定义视图?相关的知识,希望对你有一定的参考价值。
据django docs说:
class MyModelAdmin(admin.ModelAdmin):
def get_urls(self):
urls = super(MyModelAdmin, self).get_urls()
my_urls = [
url(r'^my_view/$', self.my_view),
]
return my_urls + urls
def my_view(self, request):
# ...
context = dict(
# Include common variables for rendering the admin template.
self.admin_site.each_context(request),
# Anything else you want in the context...
key=value,
)
return TemplateResponse(request, "sometemplate.html", context)
如果我没有错,我们可以通过在urls.py中添加url和views.py中的视图来执行相同的操作,因为通常这样做,引入此方法的用途是什么?我是django的新手,我可能会在这里遗漏一些东西。您能否提供一个我们无法在views.py中执行此操作的示例,我们必须使用上述方法吗?任何指导/帮助将不胜感激。
答案
我想我发现,它们都可以用来做同样的事情,但关键的区别在于你使用上述方法编写的视图属于admin应用程序,而views.py中的一般视图属于特定应用程序你写。因此,需要使用名称admin:url_name调用ModelAdmin中的url,因为url在给定示例中以admin / my_views /的形式出现。
以上是关于当我们可以通过在urls.py中的views.py和urls中添加视图时,是否需要在ModelAdmin类的管理页面中添加自定义视图?的主要内容,如果未能解决你的问题,请参考以下文章
二 Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器