为什么我只有一张专辑?

时间:2017-09-29 22:36:01

标签: python django

我开始学习Django并且有一些问题:) 这是views.py

from django.http import HttpResponse
from .models import Album


def index(request):
    all_albums = Album.objects.all()
    html = ''
    for album in all_albums:
        url = '/music/' + str(album.id) + '/'
        html += '<a href ="' + url + '">' + album.album_title + '</a><br>'
    return HttpResponse(html)

有专辑。 这是models.py

from django.db import models


class Album(models.Model):
    artist = models.CharField(max_length=250)
    album_title = models.CharField(max_length=250)
    genre = models.CharField(max_length=250)

我创建了两张专辑(例如“Red”和“Destiny”,我希望我的专辑有参考文件出现在页面http://127.0.0.1:8000/music/。但是只有一张专辑“Red”。我认为我的循环“for “不起作用,但我不明白为什么。 我希望你能理解我的问题。 请帮助我,我想睡觉:))

1 个答案:

答案 0 :(得分:1)

无论如何,请以pythonic风格覆盖您的代码,可能会有所帮助

def index(request):
    all_albums = Album.objects.all()
    html = []
    for album in all_albums:
        url = '/music/%s/' % album.id
        html.append('<a href ="%s">%s</a><br>' % (url, album.album_title))
    return HttpResponse(''.join(html))

详细信息请参阅join docs

并且通过%对@BjörnKristinsson字符串参数的评论来说,它是更老的方法,更好的解决方案是

def index(request):
    all_albums = Album.objects.all()
    html = []
    for album in all_albums:
        url = '/music/{id}/'.format(id=album.id)
        html.append('<a href ="{url}">{title}</a><br>'.format(url=url, title=album.album_title))
    return HttpResponse(''.join(html))