Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django imagekit';安全字符串';对象没有属性';名称';_Python_Django_Django Imagekit - Fatal编程技术网

Python Django imagekit';安全字符串';对象没有属性';名称';

Python Django imagekit';安全字符串';对象没有属性';名称';,python,django,django-imagekit,Python,Django,Django Imagekit,我目前正试图在我的项目中使用django imagekit处理一个图像。我对这个软件包很陌生,所以我尝试实现一个简单的处理器,将图像转换为灰度。我跟踪了一些样品 我决定使用spec,它已经包含在models.py中。但是,当我想在模板上生成图像时,我遇到了以下错误: AttributeError: 'SafeString' object has no attribute 'name' 完全错误 Traceback (most recent call last): File "/mnt/c/

我目前正试图在我的项目中使用django imagekit处理一个图像。我对这个软件包很陌生,所以我尝试实现一个简单的处理器,将图像转换为灰度。我跟踪了一些样品

我决定使用spec,它已经包含在
models.py
中。但是,当我想在模板上生成图像时,我遇到了以下错误:

AttributeError: 'SafeString' object has no attribute 'name'
完全错误

Traceback (most recent call last):
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/cachefiles/__init__.py", line 37, in __init__
    name = generator.cachefile_name
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/specs/__init__.py", line 95, in cachefile_name
    return fn(self)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/cachefiles/namers.py", line 40, in source_name_as_path
    '%s%s' % (generator.get_hash(), ext)))
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/specs/__init__.py", line 134, in get_hash
    self.source.name,
AttributeError: 'SafeString' object has no attribute 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/Image-Analysis-Web-App/pipeline/views.py", line 33, in playground_view
    return render(request, "playground.html", {"image": image})
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 171, in render
    return self._render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
    return self.nodelist.render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 936, in render
    bit = node.render_annotated(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
    return self.render(context)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/templatetags/imagekit.py", line 65, in render
    self._generator_kwargs)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/templatetags/imagekit.py", line 25, in get_cachefile
    return ImageCacheFile(generator)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/cachefiles/__init__.py", line 40, in __init__
    name = fn(generator)
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/cachefiles/namers.py", line 91, in hash
    '%s%s' % (generator.get_hash(), ext)))
  File "/mnt/c/Users/Gilang R Ilhami/Desktop/personal_projects/random_mini_projects/image_analysis_app/app/lib/python3.7/site-packages/imagekit/specs/__init__.py", line 134, in get_hash
    self.source.name,
AttributeError: 'SafeString' object has no attribute 'name'
正如我所说,我对django imagekit很陌生。我一直在网上搜索这个,但到目前为止运气不好。所以如果有人能指出我遗漏了什么,我会非常感激

url.py

from django.contrib import admin 
from django.urls import path 
from django.conf import settings 
from django.conf.urls.static import static 
from .views import *

urlpatterns = [ 
    path('', hello_world_view, name="hello_world"),
    ...,
    path('image-analysis/playground/<uuid:image_uuid>', playground_view, name='playground'),
    ...,
    path('success', success, name = 'success'), 
] 

if settings.DEBUG: 
        urlpatterns += static(settings.MEDIA_URL, 
                            document_root=settings.MEDIA_ROOT)
import os

from django.conf import settings
from django.http import HttpResponse 
from django.shortcuts import render, redirect
from numpy import uint8
from skimage import io

from .forms import *
from .models import Pipeline
from .image_processing import ImageProcessing
# Create your views here. 

def hello_world_view(request):
    return HttpResponse("<h1>HELLO</h1>")

def upload_image_view(request):

    if request.method == 'POST':

        form = PipelineForm(request.POST, request.FILES)

        if form.is_valid(): 
            form.save()
            image_uuid = form.instance.image_id
            return redirect("playground", image_uuid=image_uuid) 
    else: 
        form = PipelineForm() 
    return render(request, 'upload_image.html', {'form' : form})

def playground_view(request,image_uuid):
    image = Pipeline.objects.get(image_id=image_uuid)
    return render(request, "playground.html", {"image": image})
import uuid
from django.db import models

from imagekit import ImageSpec, register
from pipeline.processors import Grayscale

class MySpec(ImageSpec):
    processors = [
        Grayscale(),
    ]
    format = 'PNG'
    options = {'quality': 60}

register.generator('pipeline:grayscale', MySpec)

# Create your models here.

class Pipeline(models.Model):
    image_id = models.CharField(max_length=100, blank=True, unique=True, default=uuid.uuid4)
    image = models.ImageField(upload_to="image/")
playerd.html

{% extends 'base.html' %}
{% load imagekit %}

{% block content %}

<div class="container">
    <div class="row">
        <div class="col-md-6">
            <h1 style="position: sticky;top:0;">Original Image</h1>
            <img style="position: sticky;top:0;" src="{{ image.image.url }}" width="500px"/>
        </div>
        <div class="col-md-6">
            <h1>Grayscale Image</h1>
            {% generateimage 'pipeline:grayscale' source="{{ image.image.url }}" -- width="500px"%}
        </div>
    </div>
</div>


{% endblock %}
{%extends'base.html%}
{%load imagekit%}
{%block content%}
原始图像
灰度图像
{%generateimage'管道:灰度'source=“{{image.image.url}”--width=“500px”%}
{%endblock%}

您需要将图像文件对象传递给模板标记,而不是它的URL。您还需要传递它,而不带
{{}
括号和引号:

{% generateimage 'pipeline:grayscale' source=image.image width="500px"%}

另外,请将
--
放在
width
参数之前。

谢谢,但它似乎不起作用。仍然出现相同的错误。是否确实已将所有调用更新到此模板标记?除非你没有更改调用,否则我看不出你会得到完全相同的错误。我唯一更改的是
{%generateimage'管道:grayscale'source=“{image.image.url}}”-width=“500px”%}
,现在是
{%generateimage'管道:grayscale'source=“{{image.image}”--width=“500px”%}
,等等,我明白问题是什么了。我已经更新了答案。是的,就是这样!非常感谢你!