gpt4 book ai didi

python - 从 Django/Python 上传特定文件

转载 作者:行者123 更新时间:2023-12-01 03:24:52 24 4
gpt4 key购买 nike

我的 django 项目中只有一个上传文件表单(我使用的是 1.10)。实际上一切都工作得很好,但是当人们将 csv 文件上传到服务器时,我需要将我的逻辑限制为仅请求具有特定名称和格式的文件。

这是我的代码:

views.py

def list(request):
# Handle file upload
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
newdoc.save()

# Redirect to the document list after POST
return HttpResponseRedirect(reverse('action'))
else:
messages.add_message(request, messages.ERROR,
'Something went wrong with files! Please contact the system administrator')
return render(request, 'upaction-report.html')

# Load documents for the list page

# Render list page with the documents and the form
return render(request, 'upaction-report.html', {'form': form})

forms.py

class DocumentForm(forms.Form):
docfile = forms.FileField(
label='File format should be under the following format:',
help_text='- .csv format and under the name "Action_Report"',
)

模板 html

<form action="{% url "list" %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
<p>{{ form.non_field_errors }}</p>

<p>{{ form.docfile.label_tag }}</p>
<p> {{ form.docfile.help_text }}</p>


<p>

{{ form.docfile }}
</p>

<p><input type="submit" value="Upload File"/></p>
</form>

关于如何应用该限制有什么猜测吗?如果文件不正确,只需弹出一条消息,告诉您重试,直到它具有正确的格式和名称。感谢您抽出宝贵的时间,如果您需要更多详细信息,请告诉我。

最佳答案

您可以在 DocumentForm clean 方法中验证文件名,如下所示:

class DocumentForm(forms.Form):
docfile = forms.FileField(
label='File format should be under the following format:',
help_text='- .csv format and under the name "Action_Report"',
)

def clean(self):
docfile = self.cleaned_data.get('docfile')
if not docfile:
raise forms.ValidationError('file is required')
if not docfile.name.startswith('filename'):
raise forms.ValidationError('incorrect file name')
if not docfile.name.endswith('fileformat'):
raise forms.ValidationError('incorrect file format')
return super(DocumentForm, self).clean()

关于python - 从 Django/Python 上传特定文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41477053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com