1

我正在用 Django 开发一个应用程序。

在这个应用程序中有一个文件表格。

在与 base.html 关联的视图函数中,我实现了一个消息系统,如果用户没有正确填写表单并尝试提交它,它会发布消息。

messages.error(request, ('ERROR: Compile the form properly!'))

在我的models.py 中,我有一个干净的函数,它通过引发验证错误并在控制台中打印一条消息来防止表单验证:

def clean(self):
    if not (self.file):
        raise ValidationError("No file selected.")

    if not self.Glossary_file.lower().endswith('.xls', '.xlsx', '.xlsm' '.csv', '.xml', '.xlt'):
        raise ValidationError("The selected file is not a spreadsheet.")

但是,这两条消息被views.py 中的字符串覆盖。

假设我像这样重写我的干净方法:

def clean(self):
    if not (self.file):
        error_message="No file selected."
        raise ValidationError("who cares, it gets overwritten by view message")


    if not self.Glossary_file.lower().endswith('.xls', '.xlsx', '.xlsm' '.csv', '.xml', '.xlt'):
        error_message="The selected file is not a spreadsheet."
        raise ValidationError("who cares, it gets overwritten by view message")

我的views.py需要这样的东西,替换另一行:

messages.error(request, (error_message))

但我不知道如何error_message从models.py 传递到views.py。

ValidationError 阻止我return在我的 clean 函数中添加一个,我可以用它来 return error_message

这是我与表单页面对应的视图功能:

def add_file(request):

    if request.method=='POST':

        form = file_form(request.POST, request.FILES)

        if form.is_valid():
            form.save()
            insert_attempt_output="correct"

            messages.success(request, ("ok"))


            return redirect('add_file_template')

        else:
            insert_attempt_output="error"
            messages.error(request, ('ERROR: Compile the form properly!'))

            return render(request, 'add_file_template.html', {'insert_attempt_output':insert_attempt_output})

    else:
        return render(request, 'add_file_template.html', {})
4

0 回答 0