【问题标题】:Django - Template Tags, display <ul> - <li>Django - 模板标签,显示 <ul> - <li>
【发布时间】:2015-07-10 12:50:03
【问题描述】:

我有一个这样的工作 model.py,我可以使用 Django admin 向这个模型添加记录:

from django.db import models
from django.contrib import admin
from audiofield.fields import AudioField

# Create your models here.
class Music(models.Model):
    tittel = models.CharField(max_length=20, default = "titel her")
    artist = models.CharField(max_length=20, default = "Artist")
    cover = models.FileField("Cover", upload_to="player/cover/")
    audio = AudioField(upload_to='player/audio/', blank=True, ext_whitelist=(".mp3",".wav",".ogg"))
    is_active = models.BooleanField(("is active"), default = False)
    date_created = models.DateField(verbose_name="Created on date", auto_now_add="True")

class MusicAdmin(admin.ModelAdmin):
    list_display = ('tittel', 'artist', 'cover', 'audio', 'is_active', 'date_created')

我想使用模板标签在我的 index.html 中显示它的记录。 我的音乐应用文件夹结构:

.
├── admin.py
├── __init__.py
├── models.py
├── templatetags
│   ├── __init__.py
│   ├── musikk_tags.py
├── tests.py
└── views.py

music_tag.py:

from django import template
from music import models

register = template.Library()

@register.assignment_tag
def get_music_tags():
    return models.Music.objects.all()

我正在尝试在 index.html 中使用这样的模板标签:(我只希望显示活动记录)

<ul class="playlist hidden">
    {% load musikk_tags %}
    {% get_musikk_tags as musikk %}
    {% if musikk.isactive %}

        <li audiourl="{{ musikk.audio.url }}" cover="{{musikk.cover.url}}" artist="{{musikk.artist}}">{{musikk.tittel}}</li>
    {% endif %}
</ul>

我没有收到任何错误,但仍然没有显示音乐。 当不使用音乐应用程序时,像这样对列表进行硬编码:

<ul><li audiourl="01.mp3" cover="cover1.jpg" artist="Artist 1">01.mp3</li></ul>

一切都按预期工作。模板标签一定有某种问题。提前谢谢你!

【问题讨论】:

    标签: python html django django-templates


    【解决方案1】:

    get_music_tags 返回一个查询集——(在这种情况下)所有 Music 对象的集合。查询集本身没有isactiveaudiocover 属性:只有查询集中的单个项目有。您需要遍历它们:

    {% get_musikk_tags as all_musikk %}
    {% for musikk in all_musikk %}
        {% if musikk.isactive %}
    
            <li audiourl="{{ musikk.audio.url }}" cover="{{musikk.cover.url}}" artist="{{musikk.artist}}">{{musikk.tittel}}</li>
        {% endif %}
    {% endfor %}
    

    【讨论】:

    • 感谢您解决了问题! (必须将 isactive 更改为 is_active)
    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 2011-05-14
    • 1970-01-01
    • 2013-04-19
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多