1

djangoフレームワーク上に構築されたデモ製品があり、ライブで実行されています。見込み客は、スーパーユーザーアクセス権限でUIにログインします。削除オプションを表示したかったのですが、削除オプションを実行すると、「デモログインは許可されていません」のようなメッセージが表示されます。

djangoフレームワークでこれをすばやく達成する方法はありますか?これを行うための最良のオプションは何ですか。

ありがとうSiva

4

2 に答える 2

0

間違いなくスーパーユーザーではなく、スタッフユーザーを作成します。これにより、Djangoの組み込みの権限を利用できるようになります。これは、あなたの場合に便利だと思われます。

削除ではなく、DemoModelを追加および編集する権限を持つユーザーを作成します。

ModelAdminを介してchange_formにJSファイルを追加するか、カスタムビューを追加します

class DemoModelAdmin(admin.ModelAdmin):
    class Media:
        js = (
            '/static/js/mimic_delete.js',
        )

admin.site.register(DemoModel, DemoModelAdmin)

mimic_delete.jsファイルで、jQueryループを追加して、DemoModel変更フォームのresults_listの各行に削除ボタンを追加し、onclickまたは表現に必要な非表示イベントを追加できます。

別のアプローチは、モデルエントリをセッションにバインドし、ModelAdminのget_querysetをオーバーライドして、現在のセッションでユーザーが作成したエントリをフィルタリングし、セッションの有効期限が切れた後にクリーンアップすることです。

于 2012-08-30T14:27:58.800 に答える
0

デモユーザーを作成し、ミドルウェアクラスに次のコードを追加することで、これを修正しました。

                    if request.user.username == 'demo':
                            if '/delete' in path:
                                    request.user.message_set.create(message='Delete/Edit option is disabled for demo account.')
                                    return HttpResponseRedirect("../../")
                            if path.startswith ('/admin/') and request.method == 'POST' and request.POST.has_key('action'):
                                    axnname   = request.POST.get('action')
                                    if axnname == 'delete_selected':
                                            request.user.message_set.create(message='Delete/Edit option is disabled for demo account.')
                                            return HttpResponseRedirect(path)
                            if path.startswith ('/admin/') and request.method == 'POST' and request.is_ajax() is False:
                                    request.user.message_set.create(message='Add/Edit option is disabled for demo account.')
                                    return HttpResponseRedirect("../")
于 2012-08-31T04:38:37.497 に答える