python - 使用 jinja 模板从模型中加载图像
问题描述
我有一个简单的博客,我的文章模型中有一个图像,我想在我的网站上用作 div 中的背景图像。图像不会以现在编写代码的方式加载。
我尝试在我的 settings.py 中更改媒体和静态设置,但我不确定这是否是问题所在。
这是我的文章模型。
class Article(models.Model):
title = models.CharField(max_length=100)
overview = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
thumbnail = models.ImageField()
categories = models.ManyToManyField(Category)
featured = models.BooleanField()
content = HTMLField(null=True)
is_draft = models.BooleanField(default=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('article-detail', kwargs={
'id': self.id
})
这是 index.html 页面,这是我现在如何尝试使用 jinja 标签调用图像的示例:
{% extends "base.html" %}
{% load static %}
{% block content %}
<section data-overlay>
<div class="container">
<div class="row mb-4">
<div class="col-md-8 col-lg-9">
{% for post in queryset %}
<div class="pr-lg-4">
<a href="{{ post.get_absolute_url }}" class="bg-primary-3-alt rounded p-4 d-flex align-items-center justify-content-center min-vh-20">
<img src="{{ article.thumbnail.url }}" alt="Avatar" class="avatar mr-2">
<span class="text-small text-primary-3">{{ post.title }}</span>
</a>
</div>
{% endfor %}
<br>
<div class="row justify-content-center pr-lg-4">
<div class="col-auto">
<nav>
<ul class="pagination mb-0">
{% if queryset.has_previous %}
<li class="page-item"><a href="?{{ page_request_var }}={{ queryset.previous_page_number }}" class="page-link">Previous</a></li>
{% endif %}
<li class="page-item"><a href="?{{ page_request_var }}={{ queryset.number }}" class="page-link active"> {{ queryset.number }}</a></li>
{% if queryset.has_next %}
<li class="page-item"><a href="?{{ page_request_var }}={{ queryset.next_page_number }}" class="page-link">Next</a></li>
{% endif %}
</ul>
</nav>
</div>
</div>
</div>
<div class="col-md-4 col-lg-3 d-none d-md-block">
<div class="mb-4">
<h5>Newsletter</h5>
<form action="/forms/mailchimp.php" data-form-email novalidate>
<div class="form-row">
<div class="col-12">
<input type="email" class="form-control mb-2" placeholder="Email Address" name="email" required>
</div>
<div class="col-12">
<div class="d-none alert alert-success" role="alert" data-success-message>
Thanks, a member of our team will be in touch shortly.
</div>
<div class="d-none alert alert-danger" role="alert" data-error-message>
Please fill all fields correctly.
</div>
<div data-recaptcha data-sitekey="INSERT_YOUR_RECAPTCHA_V2_SITEKEY_HERE" data-size="invisible" data-badge="bottomleft">
</div>
<button type="submit" class="btn btn-primary btn-loading btn-block" data-loading-text="Sending">
<svg class="icon" width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Icon For Loading</title>
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g>
<polygon points="0 0 24 0 24 24 0 24" opacity="0"></polygon>
</g>
<path d="M12,4 L12,6 C8.6862915,6 6,8.6862915 6,12 C6,15.3137085 8.6862915,18 12,18 C15.3137085,18 18,15.3137085 18,12 C18,10.9603196 17.7360885,9.96126435 17.2402578,9.07513926 L18.9856052,8.09853149 C19.6473536,9.28117708 20,10.6161442 20,12 C20,16.418278 16.418278,20 12,20 C7.581722,20 4,16.418278 4,12 C4,7.581722 7.581722,4 12,4 Z"
fill="#000000" fill-rule="nonzero" transform="translate(12.000000, 12.000000) scale(-1, 1) translate(-12.000000, -12.000000) "></path>
</g>
</svg>
<span>Subscribe</span>
</button>
</div>
</div>
</form>
<small class="text-muted form-text">We’ll never share your details. See our <a href="#">Privacy Policy</a>
</small>
</div>
<div class="mb-4">
<h5>Popular</h5>
<ul class="list-unstyled list-articles">
<li class="row row-tight">
<a href="#" class="col-3">
<img src="img/article-1.jpg" alt="Image" class="rounded">
</a>
<div class="col">
<a href="#">
<h6 class="mb-1">How to build collateral</h6>
</a>
<div class="d-flex text-small">
<a href="#">Business</a>
<span class="text-muted ml-1">29th November</span>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</section>
{% endblock %}
这是我的 index.html 的views.py
def index(request):
article_list = Article.objects.all()
paginator = Paginator(article_list, 4)
page_request_var = 'page'
page = request.GET.get(page_request_var)
try:
paginated_queryset = paginator.page(page)
except PageNotAnInteger:
paginated_queryset = paginator.page(1)
except EmptyPage:
paginated_queryset = paginator.page(paginator.num_pages)
context = {
'queryset': paginated_queryset,
'page_request_var': page_request_var,
}
return render(request, 'index.html', context)
这是我的 urls.py
from django.urls import path, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
from django.views.generic import TemplateView
from articles.models import Author, Article, Category
from articles.views import home, article, index
urlpatterns = [
path('admin/', admin.site.urls),
path('tinymce/', include('tinymce.urls')),
path('', home),
path('index', index, name='article-list'),
path('article/<id>/', article, name='article-detail'),
path('about',TemplateView.as_view(template_name="about.html"), name = 'about'),
path('contact',TemplateView.as_view(template_name="contact.html"), name = 'contact'),
path('article', TemplateView.as_view(template_name="article.html"), name='article'),
]
网站上的一切都运行良好,我只是没有加载任何图像。相反,我得到了损坏的图像标签和我放置的任何替代文本。
解决方案
推荐阅读
- visual-studio-2015 - 如何在 MSI 中使用命令行参数
- google-chrome-extension - 扩展图标的放大镜
- javascript - 显示:无 & setAttribute() 不工作
- java - 如何在 ViewPager 和 TabLayout 中多次使用相同的 Fragment 类?
- solr - Solr 给出错误的字段长度
- java - 如何阻止我的代码多次打印“升序”?
- c++ - 在 c++ 中使用 vtd-xml 时如何摆脱 EOFException?
- html - 如何在我的 html 中包含大量代码?
- javascript - 具有一个数据值chartjs的多个数据集
- image - 带有缩放/鼠标滚动和箭头的 Tkinter Scrollabe 窗口