python - 基于 Django 类的 View : Validate object in dispatch

标签 python django django-class-based-views

当稍后在 get/post 中调用 self.get_object() 时,是否有一种既定的方法可以在不进行额外的数据库调用的情况下验证分派(dispatch)中的对象?

这是我到目前为止的内容(针对这个问题略有改动):

class CourseUpdateView(UpdateView):
    def dispatch(self, request, *args, **kwargs):

        self.request = request
        self.kwargs = kwargs
        self.object = self.get_object()

        if self.object.is_online:
            messages.warning(request, "Sorry this one can't be updated")
            return redirect("course:detail", pk=self.kwargs['pk'])

        # this is going to call self.get_object again isn't it?
        return UpdateView.dispatch(self, request, *args, **kwargs)

最佳答案

您可以缓存 get_object() 的结果。

这是一个简单的例子:

class CourseUpdateView(UpdateView):
    # [...] your dispatch method

    def get_object(self):
        # it doesn't matter how many times get_object is called per request
        # it should not do more than one request
        if not hasattr(self, '_object'):
            self._object = super(CourseUpdateView, self).get_object()
        return self._object

关于python - 基于 Django 类的 View : Validate object in dispatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14836913/

相关文章:

python - 使用基于类的 View 重新打开关闭的 django InMemoryFileUpload

python - 将旧的基于函数的通用 CRUD View 转换为新样式的基于类的通用 CRUD View

python - 使用pyqt webview渲染pdf

python - 在 Django 中翻译文件时的 Git 命令

python - 如何通过克隆当前本地环境来创建 virtualenv?

python - Django 设置 DigitalOcean Postgres "DATABASES = {"错误

python - 如何根据子项的聚合值注释 django-mptt TreeQuerySet?

Django基于类的 View 函数执行顺序

python - TensorFlow:计算 Hessian 矩阵(和高阶导数)

python - Keras 在预测时加载神经网络的权重/错误