djangoフレームワーク上に構築されたデモ製品があり、ライブで実行されています。見込み客は、スーパーユーザーアクセス権限でUIにログインします。削除オプションを表示したかったのですが、削除オプションを実行すると、「デモログインは許可されていません」のようなメッセージが表示されます。
djangoフレームワークでこれをすばやく達成する方法はありますか?これを行うための最良のオプションは何ですか。
ありがとうSiva
djangoフレームワーク上に構築されたデモ製品があり、ライブで実行されています。見込み客は、スーパーユーザーアクセス権限でUIにログインします。削除オプションを表示したかったのですが、削除オプションを実行すると、「デモログインは許可されていません」のようなメッセージが表示されます。
djangoフレームワークでこれをすばやく達成する方法はありますか?これを行うための最良のオプションは何ですか。
ありがとうSiva
間違いなくスーパーユーザーではなく、スタッフユーザーを作成します。これにより、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をオーバーライドして、現在のセッションでユーザーが作成したエントリをフィルタリングし、セッションの有効期限が切れた後にクリーンアップすることです。
デモユーザーを作成し、ミドルウェアクラスに次のコードを追加することで、これを修正しました。
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("../")