2012-01-18 17 views
1

私は通常、Python 2.6がインストールされたUbuntu 10.04マシンで動作します。私は、次のデコレータを持っている:同じマシンで期待どおりにDjango:特定の設定でデコレータの引数でエラーが発生する

def owner_required(view_func, Model): 
    ''' 
    checks if the object is being accessed but its owner 
    ''' 
    def decorator(view_func): 
     @wraps(view_func, assigned=available_attrs(view_func)) 
     def _wrapped_view(request, *args, **kwargs): 
      obj = Model.objects.get(pk=int(kwargs['pk'])) 
      if obj.user == request.user: 
       return view_func(request, *args, **kwargs) 
      return HttpResponse('Forbidden') 
     return _wrapped_view 
    return decorator(view_func) 

すべてが働いています。

私のラップトップでUbuntu 11.10とpython 2.7.2を実行すると問題が発生します。

どのようなページ、私がアクセスしようと、私は次のエラーを取得:

url(r'^(?P<pk>\d+)/$', name = 'my_view', \ 
view = owner_required(login_required(\  
DetailView.as_view(model=MyModel,\ 
template_name='myapp/view.html')),MyModel)) 
:私のmyappに/ urls.pyで

TypeError: owner_required() takes exactly 1 argument (2 given) 

を、私はエラーの原因となっている次の行を、持っていますだから、owner_requiredは、2つの引数を

を受けている:login_requiredMyModel

の結果で問題を引き起こしている可能性がありますか?私はubuntuとpythonのバージョンしか提供していません。他に何が起こるのかわかりません。この問題を解決するために他にどのような "変数"を見なければならないでしょうか?両方ともvirtualenvと同じdjangoバージョンで動作しています。1.3.1

答えて

1

おそらくこれを試したことがありますが、質問したかっただけです。古いコンパイルされたビューがサーバーにキャッシュされたとき、特に編集の直後に同様のエラーが発生していましたが、サーバーを再起動するだけでした。

0

owner_requiredのバージョンを確認するには、func_codeのプロパティを確認してください。 /media/projects/blablabla/apps/common/utils.pyに配置された私のローカルマシン上のlogin_required例えば

login_required.func_code 
# <code object login_required at 0x1e75f30, file "/media/projects/blablabla/apps/common/utils.py", line 102> 

希望はこのことができます)

関連する問題