0

テンプレートの関数 get_image から返されたリスト dd = [] のアイテムをレンダリングする方法は? リストには、関数によって返されるファイルのリストが含まれます。

index.html を追加したいのですが、project_folder/inc/html の下にあり、画像は project_folder/inc/img & settings の下にあり、views & url は project_folder にあります

index.html

<ul>
{% for object in dd %}
<li><img src="views.img_dir{{% views.img_dir.object.get_absolute_url %}}"></li>
<li><img src="views.img_dir{{% views.img_dir.dd.get_absolute_url %}}"></li>
{% endfor %}
</ul>

私がこれを試してみると:

<ul>
{% for object in dd %}
<li><img src="{{settings.img_dir }}object.get_absolute_url"></li>
<li><img src="{{settings.img_dir }}{{%object%}}"></li>
{% endfor %}
</ul>

私は TemplateSyntaxError を取得しまし

ビュー.py

SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
img_dir = os.path.join(SETTINGS_PATH, "inc/img/")

def get_image(request):
    for file in os.listdir(img_dir):
        h = []
        h.append(file)
        for l in h:
            r = l.endswith('.jpg') or l.endswith('.png') or l.endswith('.gif')
            if r == True:
                dd = []
                dd.append(l)
                return render_to_response('index.html', dd)

url.py

urlpatterns = patterns('',
    url(r'^$', get_image),

設定.py

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

TEMPLATE_DIRS = (
    os.path.join(PROJECT_ROOT, "inc/html"),
)
4

2 に答える 2

0

テンプレートをdjangoからJinja2に変更しました。関数を少し変更することで、テンプレート上のすべての画像をレンダリングできました。

JINJA2 テンプレート

関数は次のとおりです。

SETTINGS_PATH = os.path.normpath(os.path.dirname(__file__))
img_dir = os.path.join(SETTINGS_PATH, "inc/img")

class ImageHandler(webapp2.RequestHandler):
    def get(self):
        images = os.listdir(img_dir)
        template = jinja.get_template('image.html')
        template_values = {'images': images}
        self.response.write(template.render(template_values))

HTML:

<ul>
{% for img in images %}

    <li><img src="/img/{{ img|e  }}"></li>

{% endfor %}
</ul>

Django ですべての画像をレンダリングするためのスニペットも取得しましたが、テンプレート システムを変更しました。

誰かが Django でそれを取得する必要がある場合は、スニペットを次に示します。

VIEWS.PY

def index(request):
    """Renders the index for the site."""
    images = os.listdir(templates)
    images.sort()
    for i in xrange(len(images)):
        name = name_for_image(images[i])
        images[i] = (name, images[i])
    return shortcuts.render_to_response('index.html',
                                        {'images': images,},
                                        template.RequestContext(request))

index.html

{% for name, image in images %}
<td>
  <a href="{% url caption fn=image %}">
    <img src="{% url thumbnail fn=image %}"/><br/>{{ name }}
  </a>
</td>
{% if forloop.counter|divisibleby:5 %}</tr><tr>{% endif %}
{% endfor %}

def name_for_image(image):注: Django の上記のコードは、img src で画像の名前をレンダリングするという名前の別の関数にも依存しているため、微調整が必​​要です。

于 2013-09-15T04:07:52.957 に答える