簡體   English   中英

Django靜態媒體沒有顯示圖片

[英]Django static media not showing picture

在搜索了幾個小時沒有解決我問題的解決方案之后,我發布了這個。 來自我的媒體根目錄的圖片沒有顯示在我的html上。 在chrome的控制台中,我404 file not found 。即使圖像在那里。 我在Pycharm中使用Python 3,Django 1.10。

這是我將圖像上傳到的模型

from django.db import models

class Post(models.Model):
    username = "anonymous"
    post = models.ImageField(upload_to='anon')
    creation_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return Post.username

views.py

from django.shortcuts import render,get_object_or_404
from .models import Post

def home(request):
    return render(request,"base.html",{})

def post_detail(request,id=None):
    instance = get_object_or_404(Post,id=id)
    context = {
        "post": instance.post,
        "instance": instance
    }
    return render(request,"post_detail.html",context)

post_detail.html (此處圖片未顯示):

<body>
    <img src = "{{ instance.post.url}}" height="520" width="500"><br>
    {{ instance.creation_date }}<br>
    {{ instance.username }}<br>
</body>

setting.py的部分內容

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Post',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'Post.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'debug': DEBUG,
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',

            ],
        },
    },
]

WSGI_APPLICATION = 'Post.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.10/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'Post/media/')

我的目錄是什么樣的:

在此輸入圖像描述

混淆靜態和媒體設置是一個常見的錯誤。 在您的情況下,您實際處理的是用戶上傳的MEDIA而非STATIC。

 <img src = "{{ instance.post.url}}" height="520" width="500"><br>

最相關的設置是此處描述的MEDIA_ *設置https://docs.djangoproject.com/en/1.10/howto/static-files/

但更重要的是,在您的開發服務器中,您需要通過添加來啟用MEDIA的傳遞

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    # ... the rest of your URLconf goes here ...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

暫無
暫無

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

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