2013-09-25 2 views
1

Я довольно новичок в Python/Django, но я установил REST API для одного веб-сайта (siteA.com) и хотел бы, чтобы на другом сайте (siteB.com) для вызова этого API и отображения некоторых результатов. Для этого я добавил Django REST Framework и Django Auth2 Provider на сайтA. Теперь я могу вызвать API с помощью локон, чтобы получить маркер доступа:API-вызов с одного сайта Django на другой

curl -X POST -d "client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=password&username=USERNAME&password=PASSWORD" http://www.siteA.com/oauth2/access_token [1] 

Это дает ответ я хочу:

{"access_token": "72x63615xe29f4xfdadexbcd77x27b5fx0bceexx", "scope": "read", "expires_in": 86399, "refresh_token": "5fx80dx320cx3abe7d0x27d5f1x64e7x413x0f70"} 

Используя маркер доступа я получаю теперь я могу назвать API:

curl -v -H "Authorization: Bearer 72x63615xe29f4xfdadexbcd77x27b5fx0bceexx" "http://www.siteA.com/api/?q=SOMESTRING&per_page=3&page=1&sort=random"  [2] 

Который дает мне ответ JSON с 3 результатами для строки запроса «SOMESTRING».

Что все работает нормально, но теперь я хочу делать эти звонки с сайта site.com. Другими словами, я хочу сделать страницу, которая, если вызов с определенным запросом на seach сначала проверяет, есть ли токен доступа, как в [1], а затем получить результаты поиска [2] и показать их в формате JSON. Я просто не знаю, как это сделать. Пытался использовать OAuth2 от request_oauth2, но просто не знаю, как правильно преобразовать операторы curl в Python. Любая помощь?

+0

Отъезд urrlib2 mate. –

+0

Я вижу, что сделал ошибку в предыдущем комментарии. его urllib2 не urrlib2: P –

+0

Я попробовал его с OAUth первым и не смог, затем попробовал его с помощью запросов, но, наконец, с urllib2. JUst эти 3 строки выполняют большую часть работы: 'req = urllib2.Request (url, query_string); file = urllib2.urlopen (req); result = ast.literal_eval (file.read()); ' –

ответ

3

Если вы хотите, чтобы siteB.com выставлял API siteA.com, рассмотрите django-rest-framework-proxy (хороший сторонний пакет).

Если вы хотите, чтобы сайтB.com внедрял результаты API сайта site.com в обычные HTML-страницы, вам нужно будет использовать API для данных, а затем передать их обычным методам визуализации шаблонов. Согласно комментарию, вы можете использовать urllib2, но я бы рекомендовал отличные Requests.

Я надеюсь, что это поможет.

Смежные вопросы