django上傳圖片的方法-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線(xiàn)動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!

專(zhuān)注于為中小企業(yè)提供成都做網(wǎng)站、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)定海免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

這篇文章主要介紹了django上傳圖片的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

很多時(shí)候我們要用到圖片上傳功能,如果圖片一直用放在別的網(wǎng)站上,通過(guò)加載網(wǎng)址的方式來(lái)顯示的話(huà)其實(shí)也挺麻煩的,我們通過(guò)使用 django-filer 這個(gè)模塊實(shí)現(xiàn)將圖片文件直接放在自己的網(wǎng)站上。

1.使用pip安裝

pip install django-filer

這個(gè)模塊需要 django-mptt, easy_thumbnails, django-polymorphic 以及 pillow 這些依賴(lài)包,  不過(guò)安裝django-filer的時(shí)候 pip 都會(huì)自動(dòng)幫我們裝好這些。

2. django-filer 配置。

在 settings.py 中加入以下內(nèi)容:

INSTALLED_APPS = [
    # 圖片上傳模塊 django-filer
    'easy_thumbnails',
    'filer',
    'mptt',
]
# 支持視網(wǎng)膜高分辨率設(shè)備
THUMBNAIL_HIGH_RESOLUTION = True

# 處理縮列圖
THUMBNAIL_PROCESSORS = (
    'easy_thumbnails.processors.colorspace',
    'easy_thumbnails.processors.autocrop',
    'filer.thumbnail_processors.scale_and_crop_with_subject_location',
    'easy_thumbnails.processors.filters',
)

# 存放圖片文件夾設(shè)置
FILER_STORAGES = {
    'public': {
        'main': {
            'ENGINE': 'filer.storage.PublicFileSystemStorage',
            'OPTIONS': {
                'location': '項(xiàng)目路徑/media/filer',
                'base_url': '/media/filer/',
            },
            'UPLOAD_TO': 'filer.utils.generate_filename.randomized',
            'UPLOAD_TO_PREFIX': 'filer_public',
        },
        'thumbnails': {
            'ENGINE': 'filer.storage.PublicFileSystemStorage',
            'OPTIONS': {
                'location': '項(xiàng)目路徑/media/filer_thumbnails',
                'base_url': '/media/filer_thumbnails/',
            },
        },
    },
    'private': {
        'main': {
            'ENGINE': 'filer.storage.PrivateFileSystemStorage',
            'OPTIONS': {
                'location': '項(xiàng)目路徑/smedia/filer',
                'base_url': '/smedia/filer/',
            },
            'UPLOAD_TO': 'filer.utils.generate_filename.randomized',
            'UPLOAD_TO_PREFIX': 'filer_public',
        },
        'thumbnails': {
            'ENGINE': 'filer.storage.PrivateFileSystemStorage',
            'OPTIONS': {
                'location': '項(xiàng)目路徑/smedia/filer_thumbnails',
                'base_url': '/smedia/filer_thumbnails/',
            },
        },
    },
}
# 指定 MEDIA_URL 的位置
MEDIA_URL = '/media/'
MEIDA_ROOT = '項(xiàng)目路徑/media/'

在上述設(shè)置中,location 是文件真正存放的文件夾地址,而 base_url 是顯示時(shí)要指定的靜態(tài)文件網(wǎng)址。

在 urls.py 中加入以下程序代碼,才能把上傳的圖像文件當(dāng)在靜態(tài)文件處理:

from django.conf import settingsfrom django.conf.urls.static import static

urlpatterns = [    # others urls ...
    url(r'^files/', include('filer.urls')),    # ...]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEIDA_ROOT)

上述設(shè)置完成后,同步數(shù)據(jù)庫(kù) ./manage.py migrate,讓模塊加上需要的數(shù)據(jù)表。執(zhí)行 ./manage.py collectstatic,刷新靜態(tài)文件,加載 django-filer 自己的 CSS 和 Javascript 文件。我們便能在 admin 管理頁(yè)面看到多出的兩個(gè)數(shù)據(jù)表。

django上傳圖片的方法

接著我們就可以在 Folders 數(shù)據(jù)表中進(jìn)行新建文件夾,上傳文件以及刪除文件夾和文件等操作。

3. 把 django-filer 的圖像文件添加到數(shù)據(jù)表中

使用 filer 模塊提供的 FilerImageField 字段,將上傳圖像文件的功能整合到建立的數(shù)據(jù)項(xiàng)中。

在 models.py 文件中添加:

from filer.fields.image import FilerImageField

并將需要放置圖片的數(shù)據(jù)表中的 image 變量改為:

image = FilerImageField(related_name='product_image')

刪除 migrations 下除 __init__.py 的其他文件和 db.sqlite3 文件,重新執(zhí)行 ./manage.py makemigrations 和  ./manage.pymigrate ,刷新 admin 管理頁(yè)面,進(jìn)入 image 字段的數(shù)據(jù)項(xiàng),便可以看到 image 字段多了上傳文件的功能。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享django上傳圖片的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!

本文名稱(chēng):django上傳圖片的方法-創(chuàng)新互聯(lián)
鏈接地址:http://www.muchs.cn/article24/shdce.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、網(wǎng)站營(yíng)銷(xiāo)、云服務(wù)器電子商務(wù)、關(guān)鍵詞優(yōu)化手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)