如何根据当前用户是否是博客文章的所有者来限制模板中显示的编辑链接?

时间:2018-12-08 11:31:21

标签: django django-templates

我是Django的新手,正在尝试创建一个测试博客。

一切正常,但我不能将博客文章的编辑限制为博客所有者。

我的第一次尝试是成功的,但是我所做的只是在比较当前用户是否与博客帖子的所有者相同之后,在视图功能中“提高了404”。

我的第二次尝试涉及在模板中添加比较。但是,所有要做的就是删除所有用户(甚至所有者)的编辑链接。

模板代码如下。

{% extends "blogs/base.html" %}

{% block content %}

<h3> My Posts </h3>
<p>
  <a href="{% url 'blogs:new_blogpost' %}">Add a new blog post:</a>
</p>
<ul>
  {% for blogpost in blogposts %}     
    <li><strong>{{ user.username }} : {{ blogpost.owner }}</strong>
    <br>
    <strong>{{ blogpost.title }}</strong> - {{ blogpost.date_added }}
    <br>
    {{ blogpost.text }}
    <br> 
    <p>
    {% if user.username == blogpost.owner %}  
      <a href="{% url 'blogs:edit_blogpost' blogpost.id %}">edit blog post</a>
    {% endif %} 
    </p>

    </li>
  {% empty %}
    <li>No posts have been added yet.</li>
  {% endfor %}
</ul>
<a href="{% url 'blogs:new_blogpost' %}">Add a new blog post:</a>
{% endblock content %}

注意,我正在使用Django 1.8。并且,出于测试目的,我在每个列表元素的开头都包含了两个值,以确认哪些用户是哪些博客文章的所有者。

任何建议。

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试检查您的作者的用户名是否是访问您网站的用户。

类似的事情。

{% if user.username == request.user.username %}  
    <a href="{% url 'blogs:edit_blogpost' blogpost.id %}">edit blog post</a>
{% endif %} 

答案 1 :(得分:0)

我想你是在追求这个

{% if blogpost.owner.username == request.user.username %}  
    <a href="{% url 'blogs:edit_blogpost' blogpost.id %}">edit blog post</a>
{% endif %}