學習Django,我想建立一個網站,人們可以上傳圖片。整個帳戶應用程序(創建帳戶,更改密碼等)完成後,現在我必須創建一個允許用戶上傳圖像的應用程序。 我現在發現自己正在寫最後一個模板,但我不知道如何指定保存的圖片的路徑。Django上傳圖片的路徑
我已經創建了一個Image模型,用於將用戶提供的圖像文件保存到/ media/images目錄中,如下所示:image = models.ImageField(upload_to='images')
。
用戶具有完成形式爲:
class ImagePost(forms.ModelForm):
class Meta:
model = Image
fields = ('image','description','title')
所以,他要提供一種圖像,說明和標題(描述和標題是類圖像模型的第2個其他屬性
。這裏是處理邏輯部分的觀點:
@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,
})
最後處理表單模板,目前看起來是這樣的:
{% extends "base.html" %}
{% block title %}Post an image{% endblock %}
{% block content %}
<h1>Post an image</h1>
<form action="." method="post">
{{ form.as_p }}
{% csrf_token %}
<input type="submit" value="Post it!">
</form>
{% endblock %}
當用戶上傳圖片時,現在位於我的media/images目錄中的文件的名稱與用戶PC上的名稱相同。
如何找出該名稱,以便我可以指定Django顯示哪個文件?還是有一種方法來重命名文件,使其與用戶引入的標題相匹配?
<img src="media/images/WHAT_IS_YOUR_NAME" class="image-preview">
應該沒有什麼更像是:'
'(?),因爲當用戶提交表單時,將使用用戶提供的信息和文件創建Image模型的新實例。或者'
'? –
ROBlackSnail
第一個應該做的伎倆!覈實。你不提供你的模型的代碼! –
它工作!對不起,大拖延。我的應用代碼中似乎有很多錯誤,並且無法運行服務器來測試它。謝謝 ! – ROBlackSnail