【问题标题】:name 'request/self' is not defined名称“请求/自我”未定义
【发布时间】:2021-01-08 08:26:38
【问题描述】:

未定义获取请求。请找到以下代码(我没有直接在 CBV 中使用它)。

views.py

 class ShiftChangeUpdateView(request,PermissionRequiredMixin,UpdateView):
        permission_required = ('apple.change_shiftchange',)
        model=ShiftChange
        logger.info('Data has been Deleted by  %s !', request.user.username)
        fields='__all__'

我也使用 self 进行了检查,但没有运气。 urls.py

   url(r'^updategenesys/(?P<pk>\d+)/$', views.ShiftChangeUpdateView.as_view()),

如何解决这个问题?

【问题讨论】:

  • 基于类的视图在类级别有 no 请求...删除request(此处视为基类),并覆盖@987654324 @ 进行日志记录。
  • 在导入包含模块时(即当您的 Django 应用程序启动时)解析并执行 Python 类主体。正如 Willem 所说,那时不会有请求,因为应用程序甚至还没有启动,但单独接受了请求。

标签: django django-models django-rest-framework django-views


【解决方案1】:

您正在尝试在函数中使用参数,但这不是定义类的方式。因此,您不能使用request 作为基类。

您可以做的是覆盖form_valid,并在表单成功时执行该方法的登录:

#                  no request &downarrow;
class ShiftChangeUpdateView(PermissionRequiredMixin, UpdateView):
    permission_required = ('apple.change_shiftchange',)
    model=ShiftChange
    fields='__all__'

    def form_valid(self, form):
        logger.info('Data has been Deleted by  %s !', self.request.user.username)
        return super().form_valid(form)

【讨论】:

    【解决方案2】:

    在你不继承请求的类中

    【讨论】:

      猜你喜欢
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 2015-01-09
      • 2021-09-10
      • 2014-10-10
      • 2010-12-20
      • 1970-01-01
      相关资源
      最近更新 更多