简体   繁体   English

Django HTML 变量中的图像字段

[英]Imagefield in Django HTML Variable

I'm new to Django and trying to create a website with uploading image via Django Admin.我是 Django 的新手,并尝试创建一个通过 Django Admin 上传图片的网站。

I'm trying to view image uploaded in Imagefield in my HTML.我正在尝试在我的 HTML 中查看上传到 Imagefield 中的图像。 But i just can't get the image working right.但我就是无法让图像正常工作。

Banner.objects.all() doesn't seems able to get all the image file located in media folder. Banner.objects.all() 似乎无法获取位于媒体文件夹中的所有图像文件。

urls.py网址.py

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

models.py模型.py

from django.db import models
from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver
from django.utils import timezone
from django.contrib.auth.models import User
from PIL import Image

class Post(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now) #auto_now=True //auto date
    author = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

class Banner(models.Model):
    title = models.CharField(max_length=100)
    images = models.ImageField(upload_to='images',null=True,blank=True)

    def __str__(self):
        return self.title

views.py视图.py

from django.shortcuts import render
from django.views.generic import(
    ListView,
    DetailView
)

from .models import *

# Create your views here.
class PostListView(ListView):
    model = Post
    template_name = 'blog/home.html'
    context_object_name = 'posts'
    ordering = ['-date_posted'] #arrange date posted with latest on top
    paginate_by = 6

def Banner_view(request):
    banner = Banner.objects.all()
    return render(request, 'blog/home.html',{'banner':banner})

settings.py设置.py

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')

#uploaded file in base directory "media"
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

home.html主页.html

  {% for b in banner %}
  <div>
    <img src="{{ b.images.url }}">
  </div>
  {% endfor %}

你应该这样写你应该使用/进行路径检测

images = models.ImageField(upload_to='images/', null=True,blank=True)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM