Django从模板上传
我正在考虑从html模板上传一个文件。我看过大量的文档,包括文件字段、图像字段等。但是,理想情况下,我不想重写我的代码。 目前,我在我的模板上有一个简单的表单,我想在那里有一个上传功能,在那里,图像将被上传并存储到我的应用程序媒体文件夹中,如果可能的话,还可以添加到数据库中 我知道我可能走了一条漫长而复杂的道路,但如果有人能帮助我,那就太好了 html.py:Django从模板上传,django,django-templates,Django,Django Templates,我正在考虑从html模板上传一个文件。我看过大量的文档,包括文件字段、图像字段等。但是,理想情况下,我不想重写我的代码。 目前,我在我的模板上有一个简单的表单,我想在那里有一个上传功能,在那里,图像将被上传并存储到我的应用程序媒体文件夹中,如果可能的话,还可以添加到数据库中 我知道我可能走了一条漫长而复杂的道路,但如果有人能帮助我,那就太好了 html.py: 我不明白你为什么一直在这里谈论模板,模板与任何事情都没有任何关系。与所有逻辑一样,上传的处理在视图中完成 您所需的所有信息仍在数据库中。
我不明白你为什么一直在这里谈论模板,模板与任何事情都没有任何关系。与所有逻辑一样,上传的处理在视图中完成 您所需的所有信息仍在数据库中。您可以忽略关于Django表单的部分并检查它是否有效,只需将file对象传递给upload处理函数,该页面也对此进行了解释 但是,您需要更改模板,以便表单元素使用POST而不是GET(这几乎肯定是个好主意),并使用
enctype=“multipart/form data”
,如该页所述
最后,我真的建议您重写代码以使用ModelForms。它不仅可以使代码更简单,还可以验证条目,确保所有必需的字段都存在并且类型正确,等等——以及输出有效的HTML(例如,您在
标签中缺少属性的).我不明白你为什么一直在这里谈论模板,模板与任何东西都没有任何关系。与所有逻辑一样,上传的处理在视图中完成
您所需的所有信息仍在数据库中。您可以忽略关于Django表单的部分并检查它是否有效,只需将file对象传递给upload处理函数,该页面也对此进行了解释
但是,您需要更改模板,以便表单元素使用POST而不是GET(这几乎肯定是个好主意),并使用enctype=“multipart/form data”
,如该页所述
最后,我真的建议您重写代码以使用ModelForms。它不仅可以使代码更简单,还可以验证条目,以确保所有必填字段都存在并且类型正确,等等,还可以输出有效的HTML(例如,您的标签中的属性缺少。我想您应该重写代码。因为您无法通过GET请求上载文件。然后,我建议您使用ImageField,因为它会生成您描述的所有行为。如果您的表单仅设计用于在数据库中创建对象,我建议您使用ModelForm,谢谢您的建议。我完全不知道modelforms。我读过几本书,也听过很多教程,这是我第一次看到它们。谢谢:我认为你应该重写你的代码。因为您无法通过GET请求上载文件。然后,我建议您使用ImageField,因为它会生成您描述的所有行为。如果您的表单仅设计用于在数据库中创建对象,我建议您使用ModelForm,谢谢您的建议。我完全不知道modelforms。我读过几本书,也听过很多教程,这是我第一次看到它们。谢谢:谢谢。我现在已经实现了使用ModelForms的代码。谢谢你,谢谢。我现在已经实现了使用ModelForms的代码。非常感谢。
<div class="row"> <div class="span1 offset5"> </bR>
<form class="form-horizontal" method="get" action="/add/submit" value="add">
<fieldset> <div class="input">
<div class="inline-inputs">
<label>Ride Name:</label><input type="text" name="name">
<label>Type:</label><input type="text" name="type">
<label>Theme:</label><input type="text" name="theme">
<label>Description:</label><textarea rows="5" name ="description"></textarea>
<label>Author:</label><input type="text" name="author">
<label>Date Released:</label>
<div id="datetimepicker" class="input-append date">
<input type="text" name="date"></input>
<span class="add-on">
<i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
</span>
</div>
<label>Thread:</label><input type="text" name="thread">
<label>Video</label><textarea rows="2" name ="video"></textarea>
<br><br>
<input class="btn btn-primary" type="submit" value="Add" />
</div> </div>
</fieldset>
</form>
</div> </div>
def Ride_Add_Submit(request):
name = request.GET['name']
type = request.GET['type']
theme = request.GET['theme']
description = request.GET['description']
author = request.GET['author']
releasedate=request.GET['date']
video=request.GET['video']
thread=request.GET['thread']
entry = RollerCoaster(name=name, type=type, theme=theme, description=description, releasedate=releasedate, author=author, video=video, thread=thread)
entry.save()
return TemplateResponse(request, 'Ride_Add.html')