Django 检查登录的用户是否是创建记录的用户

Django check if the user that is logged in is the user that created a record

我有一个 Django 模型来记录创建记录的用户。我只想在登录用户与记录用户相同时在模板上显示按钮。

我想做类似的事情:

{% if user.is_authenticated and (request.user.is_superuser or request.user == task.user) %}

其中任务是记录。

我该怎么做?

您不能在 {% if %} 模板标签中使用括号。您可以使用以下等效的检查:

{% if user.is_authenticated and request.user.is_superuser or user.is_authenticated and request.user == task.user %}

然后您可以删除第一个 user.is_authenticated 检查,因为只有经过身份验证的用户才能成为超级用户。

{% if user.is_authenticated and request.user.is_superuser or user.is_authenticated and request.user == task.user %}

您也可以删除第二个 user.is_authenticated 检查是否所有任务都有用户(因为匿名用户永远不等于真实用户)。

{% if request.user.is_superuser or request.user == task.user %}

Django 不鼓励在模板中放置复杂的逻辑。在这种情况下,您可以将逻辑放入过滤器中,然后您的模板将简化为:

{% if task|display_button:request.user %}...{% endif %}