我怎么知道Django中的变量是否包含任何内容?

阿尼鲁德(Anirudh Prabhakaran)

我的views.py:

class PostView(TemplateView):
template_name = 'airapp/post_list.html'

def get(self, request):
    form = PostForm()
    posts = Post.objects.order_by('-date')
    users = User.objects.exclude(id=request.user.id)
    friend, created = Friend.objects.get_or_create(current_user=request.user)
    friends = friend.users.all()

    args = {'form' : form, 'posts' : posts, 'users': users, 'friends' : friends}
    return render(request, self.template_name, args)

我的post_list.html

<div class="panel panel-primary">
  <div class="panel-heading">
    <h1>Friends</h1>
  </div>
  <div class="panel-body">
    {% if **not friends.exists()** %}
    <p>You don't have any friends :( Add one!!</p>
    {% else %}
    {% for friend in friends %}
      <a href="{% url 'airapp:profile_with_pk' pk=user.pk %}"><h3>{{ friend.username }}</h3></a>
      <a href="{% url 'airapp:change_friend' operation='remove' pk=friend.pk %}"><button type="button" class="btn btn-warning" name="button">Remove Friend</button> </a>
    {% endfor %}
    {% endif %}
  </div>
</div>

有什么方法可以检查朋友是否真的包含任何东西?因为如果没有,我想显示其他内容(这很明显)

威廉·范昂塞姆

随着一个的真实性 QuerySet

感实性QuerySet是,它是否包含任何元素,所以你可以检查if friends喜欢:

<div class="panel panel-primary">
  <div class="panel-heading">
    <h1>Friends</h1>
  </div>
  <div class="panel-body">
    {% if not friends %}
    <p>You don't have any friends :( Add one!!</p>
    {% else %}
    {% for friend in friends %}
      <a href="{% url 'airapp:profile_with_pk' pk=user.pk %}"><h3>{{ friend.username }}</h3></a>
      <a href="{% url 'airapp:change_friend' operation='remove' pk=friend.pk %}"><button type="button" class="btn btn-warning" name="button">Remove Friend</button> </a>
    {% endfor %}
    {% endif %}
  </div>
</div>

如果尚未进行查询,则Django会进行查询,因此,如果您要遍历QuerySet,则此方法比存在调用更为有效,因为它还会在单个数据库查询中加载结果。

EXISTS查询

但是,如果您对使用查询集感兴趣,而只想查看查询集是否具有至少一个元素,则可以使用该friends.exists()调用。请注意,在Django模板,你就不能加括号:如果一个元素是可调用的,Django会自动调用它:

<div class="panel panel-primary">
  <div class="panel-heading">
    <h1>Friends</h1>
  </div>
  <div class="panel-body">
    {% if not friends.exists %}
    <p>You don't have any friends :( Add one!!</p>
    {% else %}
    {% for friend in friends %}
      <a href="{% url 'airapp:profile_with_pk' pk=user.pk %}"><h3>{{ friend.username }}</h3></a>
      <a href="{% url 'airapp:change_friend' operation='remove' pk=friend.pk %}"><button type="button" class="btn btn-warning" name="button">Remove Friend</button> </a>
    {% endfor %}
    {% endif %}
  </div>
</div>

(在您进行遍历时,通常需要第二个查询,在这种情况下)。

for-empty循环

Django模板也有一个{% for ...%}- {% empty %}-{% endfor %}结构。可以循环主体{% empty %}下方和循环主体for之前使用模板,该模板{% endfor %}包含在for循环中没有元素的情况下显示的内容,例如:

<div class="panel panel-primary">
  <div class="panel-heading">
    <h1>Friends</h1>
  </div>
  <div class="panel-body">
    {% for friend in friends %}
      <a href="{% url 'airapp:profile_with_pk' pk=user.pk %}"><h3>{{ friend.username }}</h3></a>
      <a href="{% url 'airapp:change_friend' operation='remove' pk=friend.pk %}"><button type="button" class="btn btn-warning" name="button">Remove Friend</button> </a>
    {% empty %}
    <p>You don't have any friends :( Add one!!</p>
    {% endfor %}
  </div>
</div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我怎么知道json主体是否包含内容?

检查变量是否仅包含我想要的内容,而不包含其他任何内容

我怎么知道,UITextField和UITextView中是否进行了任何更改/修改?

Ember:我怎么知道peekAll是否返回任何模型?

我怎么知道编译器是否会优化变量?

Wordpress / Godaddy:我怎么知道这个.htaccess文件中是否包含恶意软件?wp-currentver.php

我怎么知道堆栈和堆中是否有东西?

我怎么知道元组中是否存在某种条件?

我怎么知道页面是否在浏览器中运行?

我怎么知道回调中是否需要“err”参数?

我想知道每个帖子的ManyToMany字段是否在django中包含用户ID

我怎么知道我的字节数组是否包含空白.tif文件

我怎么知道我的minVersion是否良好?

我怎么知道CheckSatisfied的变量顺序?

我怎么知道是否使用的onComplete或的onSuccess?

我怎么知道dd是否仍在工作?

我怎么知道crontab是否工作正常?

我怎么知道是否存在膨胀视图

我怎么知道按钮是否被拨动?

我怎么知道一个数字是否包含在Java中的另一个数字中?

python如何检查元组是否包含列表中的任何内容?

我怎么知道变量是否可以直接写入二进制文件?

Haskell的hGetContents不返回任何内容,即使我知道该文件包含文本

我怎么知道我的 x 和 y 是否在我的列表中

我如何知道ArrayList在mongoDB中是否包含特定项目?

我如何知道是否需要删除C ++中的某些内容?

Java集合是否包含“包含任何内容”?

我怎么知道我是否应该通过索引或C#中的OrderedDictionary中的键访问值?

我怎么知道我要读取的内存地址在C ++中是否为空?