Я занимаюсь разработкой приложения на Django.
В этом приложении есть форма файла.
В функции просмотра, связанной с базой. 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
в мою чистую функцию, которую я мог бы использовать для возврата 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', {})