【问题标题】:Intermediate Django 2.0 admin action page not displaying中级 Django 2.0 管理操作页面未显示
【发布时间】:2018-11-26 03:15:48
【问题描述】:

我创建了一个更新自定义管理操作,并希望在更新操作完成之前转到一个新页面来请求更新确认。

以下是各种文件的代码: admin.py`

class ProfileHolderAdmin(admin.ModelAdmin):
    list_display = [field.attname for field in ProfileHolder._meta.fields]
    actions = ['update_verified']

    def update_verified(self, request, querySet):
        users_verified=querySet.update(verified='y')
        views.update_confirmation(request)
        self.message_user(request,"No. of users verified = %s" %str(users_verified))

    update_verified.short_description = "Mark selected users as verified"

admin.site.register(ProfileHolder, ProfileHolderAdmin)`

views.py 中的代码:

 def update_confirmation(request):
          return render(request,'Profile/confirm_update.html', context=None)

confirm_update.html 中的代码:

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Confirm Update</title>
</head>
<body>

    <form action="admin.py" method="post">
        <p>
            Are you sure you want to update the verification status of selected users?
        </p>
        <input type="hidden" name="action" value="update_status" />
        <input type="submit" name="apply" value="Update status"/>
    </form>



</body>
</html>

html文件的路径是: website_name\Profile\templates\Profile\confirm_update.html

Profile 是我的应用程序的名称,website_name 是目录名称。

当我执行更新功能时,状态正在正确更新,但没有显示中间更新页面。 请帮忙。

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    您的管理员操作当前返回None,这意味着管理员将负责重定向回正常的更改列表页面。

    为了呈现页面,您需要返回从update_confirmation 获得的响应。当然,您首先要呈现页面,然后运行查询集更新。为此,您需要找到一种方法来区分这两个调用(例如,通过添加 POST 参数 confirmed)。

    def update_verified(self, request, querySet):
        if request.POST.get('confirmed') is None:
            return views.update_confirmation(request)
        users_verified=querySet.update(verified='y')
        self.message_user(request,"No. of users verified = %s" %str(users_verified))
    

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 2023-03-04
      • 2013-07-09
      • 2017-06-21
      • 1970-01-01
      • 2018-11-30
      • 1970-01-01
      • 2020-09-30
      • 1970-01-01
      相关资源
      最近更新 更多