python - 基于 django 类的通用 View "CreateView"独特的 slug 错误处理

标签 python django

所以我有一个 CreateView,它 99% 都能按照我想要的方式工作。如果用户在整数字段中输入字母,它会告诉用户输入数字,如果用户将必填字段留空,它会告诉他们需要填写该字段。这一切都很棒,CreateView 会为我处理错误。然而,出于显而易见的原因,我不允许用户创建 slug 字段,这是通过将日期和其他两个字段组合起来并进行 slug 化来自动创建的。如果用户尝试创建不会导致唯一的 slug 的记录,则该表单无效,但 CreateView 不会提供任何建设性反馈(除非您处于 Debug模式,否则 UNIQUE 约束失败)。

如果我将下面的代码添加到我的 CreateView 中,那么我需要重新定义 CreateView 之前处理得很好的所有错误响应。

def form_invalid(self, form):
    return HttpResponse(#define stuff here)

有没有办法让 CreateView 正常处理无效表单(就好像我没有 def form_invalid(self, form):),除非存在 slug 冲突?

最佳答案

您可以通过在重写 form_invalid 中调用父类版本的 form_invalid 来实现这一点。

示例:

class MyCreateView(CreateView):
    def form_invalid(self, form):
        if my_condition:  # Check whatever you want
            return HttpResponse('reason it failed')
        else:  # Or call the parent class version
            return super(MyCreateView, self).form_invalid(form)

关于python - 基于 django 类的通用 View "CreateView"独特的 slug 错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29971846/

相关文章:

python - ApiError:不正确的用户名或密码YouTube帐户身份验证错误

python - Django:Gmail SMTP 错误:请先运行 connect()

Python:从字典中删除大量键的最快策略

python - 为 Pandas 创建自定义插值函数

python - python 无法打开某些网站

python - 使用 popen 时拒绝访问 - Python

python - django模板中显示自己的方法

python - 在 Pycharm 中使用 config 文件夹运行 Django 项目

python - 使用python解析文件

javascript - 如何使用javascript从html文件触发python中的变量/方法