Skip to main content
 首页 » 编程设计

python之如何在 Django 模板中访问和显示 Cloudinary 上传的图片

2024年10月24日3398°冷暖

使用 框架:Django 1.9 语言:Python 3.4 开发服务器:Django 操作系统:Windows 10

我仍然是创建网站的新手。我一直在用django来学习。现在,我遇到了一个涉及 Cloudinary 的问题。我有一个模板需要从 Cloudinary 检索和显示图像。但是,当我使用 Cloudinary 模板标签时,显示图像 url,而不是图像。我需要显示图像。

有人可以帮忙吗?

模型:

from django.db import models 
from cloudinary.models import CloudinaryField 
 
from django.core.urlresolvers import reverse 
 
class PostQuerySet(models.QuerySet): 
    def published(self): 
        return self.filter(publish=True) 
 
class HeroImage(models.Model): 
    image = CloudinaryField('image') 
    title = models.CharField(max_length=200, default='') 
 
    def __str__(self): 
        return self.title 
 
class Tag(models.Model): 
    slug = models.SlugField(max_length=200, unique=True) 
 
    def __str__(self): 
        return self.slug 
 
class Post(models.Model): 
 
    STATUS_CHOICES = ( 
        ('d', 'Draft'), 
        ('c', 'Complete'), 
        ('r', 'Review'), 
        ('p', 'Published'), 
        ('w', 'Withdrawn'), 
    ) 
 
    FACEBOOK_CHOICES = ( 
        ('web', 'website'), 
        ('art', 'article'), 
        ('blg', 'blog'), 
        ('vid', 'video'), 
        ('aud', 'audio'), 
    ) 
    hero_image = models.ForeignKey(HeroImage) 
    tag = models.ManyToManyField(Tag) 
    featured_image = CloudinaryField('image', default='') 
    page_title = models.CharField(max_length=70, default='') 
    page_description = models.CharField(max_length=155, default='') 
    canonical = models.URLField(default='') 
    situation = models.TextField() 
    breakdown = models.TextField() 
    review = models.TextField() 
    slug = models.SlugField(max_length=200, unique=True, default='') 
    publish = models.BooleanField(default=False) 
    created = models.DateTimeField(auto_now_add=True) 
    modified = models.DateTimeField(auto_now=True) 
    status = models.CharField(max_length=1, choices=STATUS_CHOICES, default='') 
    og_title = models.CharField(max_length=88, default='') 
    og_type = models.CharField(max_length=3, choices=FACEBOOK_CHOICES, default='') 
    og_description = models.CharField(max_length=200, default='') 
    og_url = models.URLField(default='') 
 
    objects = PostQuerySet.as_manager()  
 
    def __str__(self): 
        return self.page_title 
 
    def get_absolute_url(self): 
        return reverse("post_detail", kwargs={"slug": self.slug}) 
 
    class Meta: 
        verbose_name = "Post" 
        verbose_name_plural = "Posts" 
        ordering = ["-created"] 

观点:

from django.shortcuts import render, get_object_or_404 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 
from django.views import generic 
 
from django import forms 
 
from django.http import HttpResponse 
 
from cloudinary.forms import cl_init_js_callbacks   
 
from . import models  
 
class PostIndex(generic.ListView): 
    queryset = models.Post.objects.published() 
    template_name = 'index.html' 
 
class PostDetail(generic.DetailView): 
    model = models.Post 
    template_name = "post.html" 

模板:

index.html

{% block blog_posts %} 
{% for object in object_list %} 
{% load cloudinary %} 
  <div class="post"> 
    <h2>{{ object.page_title }}</h2> 
    {% cloudinary "shq7cw9kjufj8zhj1rni.png" %} 
    <p class="meta">{{ object.created }}</p> 
    {{ object.situation }} 
  </div> 
{% endfor %} 
{% endblock %} 

post.html

<div class="post"> 
    <h2><a href="{% url "post_detail" slug=object.slug %}">{{ object.title }}</a></h2> 
    <p class="meta"> 
        {{ object.created }} | Tagged under {{  object.tags.all|join:", " }} 
    </p> 
    <div> 
        {{ object.situation }} 
    </div> 
    <div> 
        {{ object.breakdown }} 
    </div> 
    <div> 
        {{ object.review }} 
    </div> 
</div> 

请您参考如下方法:

您可以尝试单击链接以查看它是否为您拍摄了该图像。或者检查保存图像的名称,有时它们会不同。 本站有详细说明http://cloudinary.com/documentation/django_integration