簡體   English   中英

Django上傳圖片的路徑

[英]Django path to uploaded image

學習Django之后,我想建立一個可供人們上傳圖片的網站。 整個帳戶應用程序(創建帳戶,更改密碼等)已完成,現在我必須創建一個允許用戶上載圖像的應用程序。 我現在發現自己正在編寫最終模板,但是我不知道如何指定保存圖片的路徑。

我創建了一個Image模型,將用戶提供的圖像文件保存到/ media / images目錄中,如下所示: image = models.ImageField(upload_to='images')

用戶必須填寫的表格是:

class ImagePost(forms.ModelForm):

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

因此,他必須提供圖像,描述和標題(描述和標題是Image模型類的另外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">

只需使用<img src="{{ image.image.url }}" class="image-preview">

其中imageImage模型的實例,第二個imageImage的模型字段,而urlImageField對象的屬性。 此處更多內容,列出項目3。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM