Обязательно ли добавлять пользовательские представления на странице администратора в классе ModelAdmin, когда мы можем делать это обычно, добавляя представления в views.py и URL-адреса в urls.py? - PullRequest
0 голосов
/ 25 мая 2018

Согласно 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)

Если я не ошибаюсь, мы можем сделать то же самое, добавив url в urls.py и views в views.py, как это обычно делается тогда,какая польза от внедрения этого метода?Я новичок в Джанго, и я могу что-то здесь упустить.Можете ли вы привести пример, где мы не можем сделать это в views.py, и мы должны использовать вышеуказанный метод?Любое руководство / помощь будет принята.

1 Ответ

0 голосов
/ 31 мая 2018

Думаю, я понял, что оба они могут использоваться для одной и той же вещи, но ключевое отличие состоит в том, что представления, которые вы пишете с использованием вышеуказанного метода, будут принадлежать приложению администратора , тогда как общие представления вviews.py принадлежит конкретному приложению, которое вы написали.Следовательно, URL-адрес в ModelAdmin должен вызываться с использованием имени admin: url_name , поскольку в данном примере URL-адрес выглядит как admin / my_views / .

...