2017-03-07 4 views
0

Django lernen, ich wollte eine Website bauen, wo Menschen Bilder hochladen können. Die gesamte Kontoanwendung (Konto erstellen, Pass ändern usw.) ist abgeschlossen, jetzt muss ich eine Anwendung erstellen, mit der der Benutzer Bilder hochladen kann. Ich bin gerade dabei, die endgültige Vorlage zu schreiben, aber ich weiß nicht, wie ich den Pfad für das gespeicherte Bild festlegen soll.Django Pfad zum hochgeladenen Bild

Ich habe ein Image-Modell erstellt, das die vom Benutzer angebotene Bilddatei wie folgt in das Verzeichnis/media/images speichert: image = models.ImageField(upload_to='images').

Die Form, dass der Benutzer abgeschlossen hat, ist:

class ImagePost(forms.ModelForm): 

    class Meta: 
     model = Image 
     fields = ('image','description','title') 

Also, er hat das Bild zu liefern, eine Beschreibung und den Titel (Beschreibung und Titel sind 2 weitere Attribute der Klasse Bildmodell

. Hier

ist der Ansicht, dass die Logik Teil Griffe:

@login_required 
def image_create(request): 
    if request.method == 'POST': 
    # form is sent 
     form = ImagePost(data=request.POST) 
     if form.is_valid(): 
      # form data is valid 
      cd = form.cleaned_data 
      new_item = cd.save(commit=False) 
      # assign current user to the item 
      new_item.user = request.user 
      new_item.save() 
      # redirect to new created item detail view 
      return render(request, 
         'images/all_images.html', 
         {'new_item': new_item}) 
    else: 
    # build form with data provided by the bookmarklet via GET 
     form = ImagePost(data=request.GET) 
    return render(request, 
       'images/image/create.html', 
       {'section': 'images', 
       'form': form, 
       }) 

schließlich die Vorlage, die die Form behandelt, sieht derzeit wie folgt aus:

Während der Benutzer das Bild hochlädt, hat der Name der Datei, die sich jetzt in meinem Medien/Bilder-Verzeichnis befindet, den gleichen Namen wie auf dem PC des Benutzers.

Wie kann ich diesen Namen herausfinden, damit ich Django angeben kann, welche Datei angezeigt werden soll? Oder gibt es eine Möglichkeit, die Datei so umzubenennen, dass sie mit dem vom Benutzer eingeführten Titel übereinstimmt?

<img src="media/images/WHAT_IS_YOUR_NAME" class="image-preview"> 

Antwort

0

Gerade <img src="{{ image.image.url }}" class="image-preview">

verwenden Wo image eine Instanz Ihrer Image Modell ist, ist der zweite image der Image ‚s Modellfeld und url ist ein Attribut des ImageField Objekt. Mehr dazu here, Listenelement # 3. (?):

+0

should't etwas mehr wie sein '' , als wenn der Benutzer das Formular abschickt eine neue Instanz des Bildmodells mit den Informationen und die Datei durch den Benutzer zur Verfügung gestellt wird erstellt. Oder vielleicht ''? – ROBlackSnail

+0

Der erste sollte den Trick machen! Prüfen Sie. Sie stellen keinen Code von Ihren Modellen zur Verfügung !! –

+0

Es hat funktioniert! Entschuldigung für die große Verzögerung. Ich schien insgesamt viele Fehler im Code meiner Anwendung zu haben und konnte den Server nicht laufen lassen, um ihn zu testen. Vielen Dank ! – ROBlackSnail

Verwandte Themen