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
. Hierist 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">
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
Der erste sollte den Trick machen! Prüfen Sie. Sie stellen keinen Code von Ihren Modellen zur Verfügung !! –
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