1

私のurlconfには、次のものがあります。

url(r'^sssssh/(.*)', staff_only_app.site.root),

私がやりたいことは、このアプリケーションへのアクセスをスーパーユーザーに制限することです。私はこれを試しました:

url(r'^sssssh/(.*)', user_passes_test(staff_only_app.site.root, lambda u: u.is_superuser)),

しかし、decorate はちょうど 1 つの引数を取ると不平を言い、私は 2 つ与えました。

functools.partial を介してデコレータをカリー化することを考えていますが、より明白な解決策が欠けている可能性があると考えました。

4

3 に答える 3

4

お返事大変遅くなりました…!

私はそれがただの簡単で汚い構文のハングアップだと思います:

url(r'^sssssh/(.*)', user_passes_test(lambda u: u.is_superuser)(staff_only_app.site.root),

^デコレータに引数を渡すための奇妙な、しかし正しい構文だと思います。

しかし、よく考えてみると、サイト全体ではなく、ビュー機能のみを装飾できます。

于 2011-09-09T14:31:42.560 に答える
1

Django の login_required や f.ex に似たデコレータを作成します。これはhttp://djangosnippets.org/snippets/254/で、ビューを飾ります。

于 2010-06-29T13:43:04.530 に答える
0

user_passes_testデコレータを使用します。

例:

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_superuser)

def sample_view(request):
于 2011-02-22T11:05:27.233 に答える