如何将Django列表视图转换为在管理站点上工作?

2024-06-30 14:56:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表视图(用于管理站点),它使用如下模板:

class UserImageListPendingView(ListView):
    model = UserImage
    queryset = UserImage.objects.filter(status=ImageBase.PENDING)
    template_name = 'userimage_list_pending.html'
    context_object_name = 'userimage_list'
    paginate_by = 5
    @method_decorator(staff_member_required)
    def dispatch(self, *args, **kwargs):
        return super(UserImageListPendingView, self).dispatch(*args, **kwargs)

尽管这样做是可行的,但在放入URL时还是有问题的网址.py地址:

urlpatterns = [
    url(r'^admin/app/pendinguserimages/?$', login_required(
        UserImageListPendingView.as_view()),
        name='pendinguserimages'),
...
]

…因为这会阻止重定向正常工作。你知道吗

我试着通过管理员.py地址:

def get_admin_urls(urls):
    def get_urls():
        return patterns('',
            url(r'^app/pendinguserimages/?$',
                 UserImageListPendingView.as_view(), name='pendinguserimages'),
        url(r'^app/checkuserimage/(?P<pk>[0-9]+)/?$',
            userimage_check, name='checkuserimage'),
            ...
        ) + urls
    return get_urls

admin_urls = get_admin_urls(admin.site.get_urls())
admin.site.get_urls = admin_urls

。。。但是在反转checkuserimage URL时出错。你知道吗

我该如何转换这个视图以更好地适应管理站点,但仍然使用模板?你知道吗


Tags: name视图模板appurlgetreturnadmin
1条回答
网友
1楼 · 发布于 2024-06-30 14:56:50

我根本不需要重写ListView。在中定义URL之后管理员.py而不是在网址.py,在模板中反转URL时,我只需在名称前加上“admin:”,如下所示:

<a href="{% url 'admin:checkuserimage' record.id %}">check</a>

相关问题 更多 >