0

django アプリ用に 2 つの非常に単純なデコレータを作成しました。

def login_required_json(f):
    def inner(request, *args, **kwargs):
        #this check the session if userid key exist, if not it will redirect to login page
        if not request.user.is_authenticated():
            result=dict()
            result["success"]=False
            result["message"]="The user is not authenticated"
            return HttpResponse(content=simplejson.dumps(result),mimetype="application/json")
        else:
            return f(request, *args, **kwargs)

def catch_404_json(f):
    def inner(*args,**kwargs):
        try:
            return f(*args, **kwargs)
        except Http404:
            result=dict()
            result["success"]=False
            result["message"]="The some of the resources throw 404"
            return HttpResponse(content=simplejson.dumps(result),mimetype="application/json")

しかし、それらをビューに適用すると、テンプレートに「ViewDoesNotExist」エラーが表示され、呼び出し可能ではないためビューをインポートできなかったと表示されます。私は何を間違っていますか?

4

1 に答える 1

3
def login_required_json(f):
    def inner(request, *args, **kwargs):
        #this check the session if userid key exist, if not it will redirect to login page
        if not request.user.is_authenticated():
            result=dict()
            result["success"]=False
            result["message"]="The user is not authenticated"
            return HttpResponse(content=simplejson.dumps(result),mimetype="application/json")
        else:
            return f(request, *args, **kwargs)

    return inner   # <--- Here

デコレータは、実際のビューではなく、Noneを返します。したがって、上記で示したように内部関数を返します。

于 2012-10-24T13:21:49.727 に答える