首页 > 解决方案 > 显示可能不存在的对象的页面?

问题描述

所以我有一个用于查看专辑页面的页面,该页面还调用艺术家 id 来显示专辑的关联艺术家。

在我的数据库中,“艺术家”和“乐队”是两个不同的模型。

我以这种格式调用艺术家 ID:

href="{% url 'artist_details' Artist_id=Album.Artist.id %}"

在 view.py 中:

artist = get_object_or_404(Artist, pk=Artist_id)

因此,当加载不包含艺术家而是乐队的专辑页面时,有没有办法解决由于没有有效的艺术家 ID 而发生的 NoReverseMatch 错误?(因为它获取的是乐队 ID)

提前致谢

标签: django

解决方案


如果专辑没有艺术家,那么渲染链接可能根本没有意义,因此将其包装在一个if块中:

{% if Album.Artist %}
    <a href="{% url 'artist_details' Artist_id=Album.Artist.id %}"></a>
{% endif %}

在不相关的注释中,您可能会考虑遵循PEP8进行变量命名 - 在 Python 中通常不鼓励使用驼峰式大小写来命名变量。


推荐阅读