Вызов обработчика поршня в функции просмотра Django - PullRequest
1 голос
/ 03 января 2012

Я использую поршень django для реализации моего RESTful API.Я уже реализовал API, который

/api/[uuid of user]

выдаст всю информацию, связанную с uuid пользователя.

Однако я также хочу реализовать другой API

/api/user/username

где вывод должен точно такой же, как предыдущий.

Я не хочу поддерживать два API с разными входами, но имеет одинаковый вход.Поэтому я хочу перенаправить вызов API поршня.После поиска в интернете кажется, что поршень не может этого сделать (поправьте меня, если я ошибаюсь), поэтому я выхожу из обходного пути.Для второго API я могу использовать функцию представления django, чтобы реализовать, и если имя пользователя существует, тогда вернуть обработчик.Если не существует, то вернуть сообщение об ошибке в функции просмотра.Мой код следующий.

def username_url_map(request, username):
   try
        user = UserProfile.objects.get(user = username)
    except UserProfile.DoesNotExist:
        return HttpResponse(simplejson.dumps({'error':'This user does not exist.' }), mimetype='application/json')
    except UserProfile.MultipleObjectsReturned:
        return HttpResponse(simplejson.dumps({'error':'This user does not exist.'}), mimetype='application/json')
    uuid = user.uuid

    results=GenericHandler.read(request, uuid)

    json = simplejson.dumps(results)
    return HttpResponse(json, mimetype='application/json')

Но я получаю следующее сообщение об ошибке:

TypeError
Exception Value: unbound method wrapper() must be called with GenericHandler instance as first argument (got WSGIRequest instance instead)

1 Ответ

2 голосов
/ 03 января 2012

В сообщении об ошибке сообщается, что метод read для GenericHander является методом экземпляра, а не методом класса.Вам нужно будет создать экземпляр объекта, прежде чем вы сможете вызвать метод.

Не зная ничего больше о классе или методе, эта может работать:

handler = GenericHandler()
results = handler.read(request, uuid)

, но вызову экземпляра могут потребоваться некоторые параметры, которые должны быть задокументированы.

...