2017-08-10 18 views
0

私はフロントエンドページで標準のAldryn Newsblog Buttonsを利用しようとしています。だから、すべてのユーザーは記事を追加、削除、編集することができます(自分で作成した記事だけですが、質問ではありません)。これは、リンクを含むメニューです: Menu in the ToolbarDjango CMS Aldryn NewsBlogフロントエンドからの記事を削除

だから私は私のテンプレートウィッヒにボタンを追加するに編集をトリガし、追加または削除プロンプト:Delete prompt 私は、誰かが私を助けることができると思います。前もって感謝します。

+0

フロントエンドのWebページにある削除/編集/追加というボタンがあり、認証されたユーザーだけがこれを見ることができますか?だから、それはカスタム管理者/結果ページのようなものですか?ちょうどDjangoのCMSダブルクリックに固執するだけで、オプションはすべて自分自身に表示されますか? – tdsymonds

+0

私は会社のウェブサイトで働いているので、すべての従業員は記事を追加/削除/編集できるはずです。しかし、彼らはこれを行うためにバックエンドに行く必要はありません。私は彼らにすべてのオプションを持つツールバーを見せたくありません。私はこれが私の質問を明確にすることを願っています – kaufi02

答えて

0

すべての従業員にツールバーが表示されないようにするには、かなりの余分な作業が必要です。あなたは許可するコンテンツを編集できるように権限を適用することができます。つまり、ユーザーはDjango CMSの組み込み機能を最大限に活用することができます。これは素晴らしい方法です。

このルートを使用したくない場合は、articleモデル用に独自のミニ管理者を作成する必要があります。私はすぐに、あなたが正しい方向に向けるのを助けるために、これにどのようにアプローチできるかについてのアイデアを一緒に投げかけました。 Djangoの管理者などの確認ページである可能性がビューを削除する

<section> 
    {% if show_controls %} 
     <div class="controls"> 
      <a href="/path/to/delete/[article-pk]" class="btn btn-danger">Delete</a> 
      <a href="/path/to/edit/[article-pk]" class="btn btn-default">Edit</a> 
     </div> 
    {% endif %} 
    <article> 
     ... 
    </article> 
</section> 

パス:のような記事テンプレートで

from django.views.generic import DetailView 
from .models import Article 

class ArticleView(DetailView): 
    context_object_name = 'article' 
    model = Article 
    template_name = 'path/to/article.html' 

    def get_context_data(self, **kwargs): 
     context = super(ArticleView, self).get_context_data(**kwargs) 
     context['show_controls'] = (self.request.user.is_authenticated() and 
      context[self.context_object_name].article == self.request.user) 
     return context 

まず、あなたの記事ビューは次のようになります。線に沿ってテンプレートと

from django.contrib.auth.decorators import login_required 
from django.core.exceptions import PermissionDenied 
from django.shortcuts import get_object_or_404, redirect, render 
from .models import Article 


@login_required 
def delete_article(request, article_pk): 
    if request.method == "POST": 
     article = get_object_or_404(Article, pk=article_pk) 
     if request.user != article.author: 
      raise PermissionDenied 

     article.delete() 
     return redirect('/redirect/url') 
    else: 
     context = {} 
     ... 

     return render(request, 'path/to/confirm/delete.html', context) 

:だからあなたのような見解を持っていると思います

<section> 
    <form method="POST"> 
     {% csrf_token %} 
     <p>Are you sure you want to delete?</p> 
     <input type="submit" value="Delete"> 
    </form> 
</section> 

あなたは、そのページにユーザーをナビゲートし、編集ページのために同様のセットアップを作成したいですフィールドを修正して送信できるようなフォームがあります。

+0

あなたのアプローチに従えば、ウィンドウ(iframe)は次のようになります:https://i.stack.imgur.com/9HDGg.png – kaufi02

+0

Django CMSでiframe経由で読み込まれたDjango管理者ページ。私の解決策はDjangoの管理者でもDjangoのCMSでもない。作成者である認証されたユーザーが記事を削除できるようにするページを作成している。あなたが望んでいても、それをスタイルすることができますが、それはあなたに完全に合わせられています。これは私があなたが余分な仕事をしていると言ったときの意味です。個人的には、私はDjango CMSを使用し、ユーザーが適切なものだけを修正できるようにアクセス許可を設定します。 – tdsymonds

関連する問題