2015-07-22 2 views
0

Проведенный весь день, поиск и надежда, что кто-то может дать мне ответ.Django 1.8 загрузка файлов для определенного места

Может кто-нибудь, пожалуйста, сообщите, как сделать 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) 
    ) 
+0

Это неуместная деталь на данный момент, но ваш пример использует непоследовательную замену символа пробела. 'main street' становится' main_street', а 'flat 1' становится' flat1'. – nothingisnecessary

+0

Можете ли вы также показать код, который сохраняет файл в «конкретном месте», на которое вы ссылаетесь? Если вы это сделаете, я смогу настроить ответ в соответствии с вашим кодом. – nothingisnecessary

+0

pleas see the update –

ответ

0

Вы можете использовать request.get_full_path(), чтобы получить путь для запрашиваемой страницы.

См. Также this related question и read the official docs here.

+0

Привет, большое вам спасибо за ответ, не уверен, как еще объяснить: cureewnt setup был в models.py класс Document (models.Model): docfile = models.FileField (upload_to = 'documents /% Y /% m /% d ') , но я хочу, чтобы он сохранялся в документах/main_street/houseį/flat1 для этого конкретного шаблона, очевидно, для других квартир, которые являются другими, мне нужно, чтобы файлы сохранялись в их собственных каталогах в соответствии с paged открылся в то время. надежда имеет смысл. еще раз спасибо –

Смежные вопросы