2016-03-21 5 views
1

投稿の作成者だけが「削除ボタン」と「編集」ボタン"?投稿の作成者だけが削除ボタン(Django-Templates)を見ることができるように実装する方法

現在、私のテンプレートは次のようになります。

{% if user.is_authenticated %} 
    <hr> 
     <a href="{% url 'blog:delete_post' pk=post.pk %}">Delete |</a> 
     <a href="{% url 'blog:post_update' pk=post.pk %}">Edit</a> 
{% endif %} 

私は、彼らが

{% if user.is_authenticated and post.author == request.user%} 

を使用したが、その後のポストのも、著者は2つのボタンが見ることができなかった例を、見つけました。私のtempateの他のものはすべて、{{post.author}}、{{post.title}}などのように定義されています。

私のクラスの投稿には、外部キーの著者(ユーザーから)があります。ボタンを見ることができても、実際の作者だけが投稿を削除できるので、ビューはすべて機能しています。私が苦労しているのはテンプレートだけです。私はどんな助けにもうれしいです!

'context_processors': [ 
      'django.contrib.auth.context_processors.auth', 
      'django.template.context_processors.debug', 
      'django.template.context_processors.i18n', 
      'django.template.context_processors.media', 
      'django.template.context_processors.static', 
      'django.template.context_processors.tz', 
      'django.contrib.messages.context_processors.messages' 
] 

そして、これらのポストとのUserProfileのための私のモデルです:

これらは私のcontext_processorsはsettings.pyである

class Post(models.Model): 
    author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1) 
    title = models.CharField(max_length=200) 
    content = models.TextField() 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
+2

テンプレート内で '{%%user.is_authenticated%}'が動作している場合'{%user.is_authenticated and post.author == user%}'があなたの望むことをします。 –

+2

'user'オブジェクトをテンプレートに渡しましたか?そうでなければ '{%if request.user.is_authenticated and request.user == post.author%}'で確認する必要があります ' –

+1

' settings.py'に 'models.py'とコンテキストプロセッサを投稿してください – Selcuk

答えて

0

主キーを比較してみてください。

{% if post.author.pk == request.user.pk %}...{% endif %}

関連する問題