【发布时间】:2015-10-12 16:26:35
【问题描述】:
花了一整天的时间寻找,希望有人能给我答案。
有人可以请教如何让Django在根据打开的页面上传文件时创建文件目录。
例如,我需要为公寓创建网页,每个公寓都可以上传文件。
我知道如何上传到特定位置,但是 Django 有没有办法读取打开的页面并使用该页面的名称创建一个目录,比如说:
www.comunity.com/main street/house5/flat 1
我想用
创建目录main_street/house5/flat1
以及要存储在那里的图像。
希望这是有道理的。
目前是models.py
# -*- coding: utf-8 -*-
from django.db import models
class Document(models.Model):
docfile = models.FileField(upload_to='documents/%Y/%m/%d')
还有forms.py
class DocumentForm(forms.Form):
docfile = forms.FileField(
label='Pasirinkite dokumenta'
)
Views.py
from newsletter.models import Document
from newsletter.forms import DocumentForm
def Main_street_6_flat_1(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('Main_street_6_flat_1'))
if request.method != 'POST':
raise Http404
docId = request.POST.get('docfile', None)
docToDel = get_object_or_404(Document, pk = docId)
docToDel.docfile.delete()
docToDel.delete()
else:
form = DocumentForm() # A empty, unbound form
# Load documents for the list page
documents = Document.objects.all()
# Render list page with the documents and the form
return render_to_response(
'Main_street_6_flat_1.html',
{'documents': documents, 'form': form},
context_instance=RequestContext(request)
)
【问题讨论】:
-
此时这是一个无关紧要的细节,但您的示例对空格字符使用了不一致的替换。
main street变为main_street和flat 1变为flat1。 -
您能否也显示将文件保存到您所指的“特定位置”的代码?如果您这样做,我可以自定义答案以适合您的代码。
-
请看更新
-
谢谢你的链接,我看了几次,但无法让它工作,看起来它使用的是 id 而不是模板 url,我想使用它。