python - 如果存在用户创建的方法的实例,则显示它们,否则显示字符串 Django
问题描述
代码:
视图.py:
@login_required(login_url='loginPage')
def boardPage(request):
if Board.objects.filter(user=request.user).exists():
boards = get_list_or_404(Board, user=request.user)
context = {'boards': boards}
return render(request, 'tasks/boards.html', context)
else:
context = {'boards': False}
return render(request, 'tasks/boards.html', context)
板子.html:
{% extends 'tasks/main.html' %}
{% block content %}
<center>board page<hr>
<a href="{% url 'boardAdd' %}">add board</a> <br><br>
your boards: <br> <br>
{% if boards is false %}
<p>you don't have any boards... Have you tried creating one? ;)</p>
{% else %}
{% for board in boards %}
<a href="{% url 'insideBoard' board.id %}">{{board}}<br></a>
{% endfor %}
{% endif %}
<br>
<br>
<hr>
<a href="{% url 'logoutPage' %}">Logout</a>
</center>
{% if messages %}
{% for message in messages %}
<u><br>{% if message.tags %} {% endif %}>{{ message }}</u>
{% endfor %}
{% endif %}
{% endblock %}
模型.py:
class Board(models.Model):
title = models.CharField(max_length=50, null=True)
user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
def __str__(self):
return self.title
class Task(models.Model):
title = models.CharField(max_length=200, null=True)
done = models.BooleanField(default=False, null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
board = models.ForeignKey(Board, null=True, on_delete=models.CASCADE)
due_to = models.DateField(null=True, validators=[dateValidation])
def __str__(self):
return self.title
每次用户删除他/她的所有板或新用户访问该页面时(新用户还没有任何板,他们可以在那里创建一个)我得到“TypeError at / 'bool' object is not iterable” 如何我是否需要更改代码以在该页面上查看字符串而不是类的实例?
解决方案
您不需要添加新变量,只需检查数组是否为空。当您尝试Boolean
在模板中迭代时遇到错误({'boards': False}
)
@login_required(login_url='loginPage')
def boardPage(request):
boards = Board.objects.filter(user=request.user)
context = {'boards': boards}
return render(request, 'tasks/boards.html', context)
{% extends 'tasks/main.html' %}
{% block content %}
<center>board page<hr>
<a href="{% url 'boardAdd' %}">add board</a> <br><br>
your boards: <br> <br>
{% if not boards %}
<p>you don't have any boards... Have you tried creating one? ;)</p>
{% else %}
{% for board in boards %}
<a href="{% url 'insideBoard' board.id %}">{{board}}<br></a>
{% endfor %}
{% endif %}
<br>
<br>
<hr>
<a href="{% url 'logoutPage' %}">Logout</a>
</center>
{% if messages %}
{% for message in messages %}
<u><br>{% if message.tags %} {% endif %}>{{ message }}</u>
{% endfor %}
{% endif %}
{% endblock %}
推荐阅读
- c++ - 虚拟继承对构造函数的影响
- reactjs - 使用 React-Redux:如何在嵌套组件中访问 Store 中的变量
- reactjs - React,尝试将 localhost 连接到我的 routs 文件时得到 404
- swift - 如何用 Spritekit 模拟弹跳球的运动?
- python - 如何将可变长度的语音特征提供给 RNN(LSTM)进行语音识别?
- jmeter - 关于 WebDriver Sampler 和 Config/Listener 文件夹路径
- c++ - 按分母和分子的升序查找两个给定分数之间的不可约分数
- node.js - 如何在 MS Team 应用工作室中构建 Node.js 应用?
- python-3.x - 打印列表时看不到项目 > frozenset({'nan'}
- c# - 构造一个具有布尔 System.TypeCode 的 System.Char