当我们可以通过在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类的管理页面中添加自定义视图?的主要内容,如果未能解决你的问题,请参考以下文章

使用TDD理解views.py与urls.py的关系

二 Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器

Ajax URL 未在 views.py 中执行正确的功能,如 urls.py 中所定义

试图让我的 views.py 和 urls.py 正常工作

Django note

Python(四十六)url路由分配及模板渲染方式