我设法使用django配置系统,允许我将文件上传到我的媒体文件夹。我(使用simple-html)包含一个下拉菜单,该菜单将指定在管道中处理上传文件时将考虑的参数。
<form action="{% url "list" %}" method="post" enctype="multipart/form-data">
<tr>
{% csrf_token %}
<p>{{ form.non_field_errors }}</p>
<p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p>
<p>
{{ form.docfile.errors }}
{{ form.docfile }}
</p>
</tr>
<tr>
<th>Genome Dataset</th>
<TD WIDTH = 80% ALIGN=left VALIGN=top>
<SELECT NAME='genome' ID='genome'>
<OPTION>All</OPTION>
<OPTION>Neanderthal</OPTION>
<OPTION>hg38 Human</OPTION>
<OPTION>Denisovan</OPTION>
</SELECT>
</tr>
<p><input type="submit" value="Upload"/></p>
</form>
我需要将选定的下拉选项发送到文本文件。我试图在views.py中执行以下操作。然而。当文件成功上传到媒体文件夹时,媒体文件夹中不会显示任何文本文件 - 这是必需的。
def GenomesView(request):
if request.method == 'GET':
getgen = request.GET.get('genome')
content = ContentFile(getgen)
f = open(os.path.join(settings.MEDIA_ROOT, 'file.txt'), 'w')
myfile = File(f)
myfile.write(getgen)
myfile.close()
媒体文件夹的位置如下所示。
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
因此,我的问题是如何将选定的选项形式下拉到下拉列表,每次将文件上传到网站时,选择都会发送到文本文件,该文件将针对每个新提交进行覆盖(作为所选选项参数的临时存储,即“Neanderthall”等,如上面的代码所示)?
答案 0 :(得分:0)
看起来您正在使用表单来发布此数据,但只有在请求是GET时才写入文件。尝试将其更改为POST。此外,由于request.POST.get('genome')
应返回一个字符串供您写入文件,因此无需将其包装在ContentFile
中。试试这个:
if request.method == 'POST':
getgen = request.POST.get('genome')
with open(os.path.join(settings.MEDIA_ROOT, 'file.txt'), 'w') as f:
f.write(getgen)