You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Django模板控制帖子显示并判断用户选择的公开状态?

解决方法:修正模板中的字段判断逻辑

嘿,我发现你代码里的问题啦!你的模板判断用错了字段名,这就是为什么没法正确识别用户选择的选项。

问题根源

你在models.py里定义的存储公开状态的字段是post_public,但在index.html模板里却用了post_object.choices来判断——choices只是这个字段的选项配置参数,不是实际存储值的字段名,所以这个判断根本取不到正确的值!

修正步骤

把模板里的判断条件改成直接检查post_public字段的值就行:

修正后的index.html代码

<!DOCTYPE html> 
<html lang="en" dir="ltr"> 
<head> 
    <meta charset="utf-8"> 
    <title></title> 
</head> 
<body> 
    {% for post_object in object_list %} 
        {% if post_object.post_public == "Public" %} 
            <h1>{{ post_object.post_title }}</h1> 
            <p>{{ post_object.post_description }}</p> 
        {% endif %} 
    {% endfor %} 
</body> 
</html>

额外小技巧(可选)

Django给带choices的字段自动生成了get_xxx_display()方法,用来获取选项的显示文本。比如你可以用{{ post_object.get_post_public_display }}拿到用户看到的选项名称(这里你的键和值一样,所以效果和直接取post_public一样,但如果以后把选项改成('pub', 'Public')这种键值不同的形式,用这个方法会更稳妥)。对应的判断可以写成:

{% if post_object.get_post_public_display == "Public" %}

这样就能准确判断用户选择的是Public还是Not public,从而控制帖子的展示啦!

内容的提问来源于stack exchange,提问作者Luis Leuppi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 14:42:56