首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sorl缩略图不打开模板中的图像(Django)

Sorl缩略图不打开模板中的图像(Django)
EN

Stack Overflow用户
提问于 2015-04-06 13:35:16
回答 1查看 1.6K关注 0票数 0

我按照教程创建了一个缩略图,用于在模板中上传和发布文件和图像。我用的是Django 1.6对于一个与缩略图字段相关的get_method()版本,上传图像或文本的位置显示在下面的html one_labeling_index.html中,但未打开;对于第二个版本,sorl -缩略图,它在使用“浏览”-上传按钮后完全没有显示任何内容。

在models.py中

代码语言:javascript
复制
from sorl.thumbnail import get_thumbnail
from django.core.files.base import ContentFile
# instance, is instance from django and filename is name of uploaded file
#  formats str to filename format str

def get_upload_file_name(instance,filename):
    return "uploaded_files/%s_%s" % (str(time()).replace('.', '_'), filename)

class Labeling(models.Model):

    sentence = models.CharField(max_length=200)
    datetime = models.DateTimeField()
    title = models.CharField(max_length=70)
    current_count = models.IntegerField()
    label = models.CharField(max_length=200)
    # thumbnail field
    thumbnail = models.FileField(upload_to=get_upload_file_name)


 def __unicode__(self):
        return self.sentence

class OneLabeling_Phrase(models.Model):

    sentence = models.CharField(max_length=200)
    label = models.CharField(max_length=200)
    thumbnail = models.FileField(upload_to=get_upload_file_name)

在views.py中

代码语言:javascript
复制
def LabelingIndex(request):
        labels = Labeling.objects.all()

        return render(request,"labeling_index.html", {"labels":labels})


def one_labeling(request,postID):

    one_labeling = Labeling.objects.get(id=postID)
    if request.method == 'POST':
        form = LabelingForm(request.POST, request.FILES)

        if form.is_valid():
            postonelabeling(request, one_labeling)

    else:
        form = LabelingForm()

    m = {"form":form, "one_labeling":one_labeling}
    m.update(csrf(request))

    return render_to_response('one_labeling_index.html', m)

在forms.py中

代码语言:javascript
复制
class LabelingForm(forms.ModelForm):


    class Meta:
        model = Labeling
        fields = ('title', 'current_count', 'sentence', 'label', 'thumbnail')

在urls.py中

代码语言:javascript
复制
   url(r'^labeling$', LabelingIndex),
   url(r'^labeling(?P<postID>\d+)$',one_labeling),

在html labeling_index.html中

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>


{% for one_labeling in labels %}

    <h2><a href="/labeling{{ one_labeling.id}}">{{ one_labeling.title }}</a></h2>

    <p>{{ one_labeling.sentence }}</p>
    <p>{{ one_labeling.label }}</p>

    {% for c in one_labeling.onelabeling_phrase.set_all %}

         <p>{{ one_labeling.sentence }}</p>
         <p>{{ one_labeling.label }}</p>
         <p>{{ one_labeling.thumbnail }}</p>





    {% endfor %}

{% endfor %}


</body>
</html>

在one_labeling_index.html中

代码语言:javascript
复制
{% load static %}
{% load thumbnail %}
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>





<form action="" method="post" enctype="multipart/form-data">{% csrf_token %}
<ul>
    {{ one_labeling.thumbnail}}


     {{form.as_ul}}


    <p><img src="{% get_static_prefix %}{{one_labeling.get_thumbnail}}" width="200"/></p>

      # with soal - thumbnail
    {% thumbnail item.image my_size_string crop="left" as im %}
       <img src="{{thumbnail.labeling}}"width="200">
    {% empty %}
    <p>No image</p>
    {% endthumbnail %}


</ul>



</body>
</html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-06 15:37:22

上传图像或文本的位置显示在下面的html one_labeling_index.html中,但未打开。

我不知道这意味着什么,但我想你的意思是空间在那里,但没有图像显示。在本例中,之所以会发生这种情况,是因为您将一个<img>与一个中断的源放在一起。其余部分根本没有显示任何内容,因为代码被破坏了。

这里缺少一些元素。例如,我不确定变量item来自何处?不管怎样,你用错了sorl-缩略图。看一下文档中的示例。记住,您有thumbnail item.image AS im,这意味着您的图像对象现在被引用'im‘。我有属性url,宽度,高度。所以你的代码应该是:

代码语言:javascript
复制
{% thumbnail one_labeling.thumbnail '200x200' crop="left" as im %}
   <img src="{{ im.url }}" width="{{ im.width }}" heigh="{{ im.height }}">
{% empty %}
   <p>No image</p>
{% endthumbnail %}

get_thumbnail是sorl-缩略图的一个方法,而不是你的模型,所以你不能说{{ one_labeling.get_thumbnail }},除非你真的在标签模型中创建了这个方法。如果您想从模型中设置sorl缩略图:

代码语言:javascript
复制
from sorl.thumbnail import get_thumbnail

class Labeling(models.Model):
   pass

   def get_thumb(self):
        im = get_thumbnail(thumbnail, '200x200', crop='center', quality=99)
        return im.url # remember that sorl objects have url/width/height attributes

因此,在模板中您可以拥有:

代码语言:javascript
复制
<img src="{{ one_labeling.get_thumb }}" />

希望这能有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29472364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档