2016-08-18 2 views
-2

На странице internallogin, если пользователь аутентифицируется, я хотел бы сделать запрос на отправку. Для этого у меня есть следующий код.Как совместить колбу и запросы в python?

@app.route('/internallogin', methods=['POST', "GET"]) 
def showInternallogin(): 
    uname = request.form.get("name") 
    passw = request.form.get("pass") 
    if is_valid_login(uname, passw): 
     print("legal_login") 
     req = requests.Request(method="POST", url='http://localhost:5000/internal', data={"name": uname, "passw": passw}) 
     return req 
    else: 
     return redirect('/login') 

Что happtens является immidiately после печати "legal_login" является то, что я получаю ошибку, что TypeError: 'Request' object is not callable. Как я могу сделать запрос с использованием фляжки?

ответ

0

Ниже прямо из @Karin ответа

response = requests.post('http://localhost:5000/internal', data={...}) 

Здесь может быть причина, почему вы получаете эту ошибку.

Return a requests.Response object from Flask

If a tuple is returned the items in the tuple can provide extra information. Such tuples have to be in the form (response, status, headers) where at least one item has to be in the tuple. The status value will override the status code and headers can be a list or dictionary of additional header values.

Это должно вероятно решить.

return (req.text, req.status_code, req.headers.items()) 
+2

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/13380224) – IanS

+0

@IanS это лучше? – Adam

+0

Да спасибо отлично :) – IanS

3

Вы можете оформить пост с помощью requests так:

response = requests.post('http://localhost:5000/internal', data={...}) 

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

+0

Hello Karin, когда я вношу такое изменение, я получаю ту же ошибку, что 'TypeError: объект Request 'не вызываем'. Есть ли какие-либо исправления? –

+0

Если вы заменили свой запрос предложением, в вашем коде не должно быть 'Request' (вы должны заменить исходную строку' req = requests.Request (...) 'в том формате, который я дал). – Karin

+0

Извините, хороший вызов - когда я делаю это изменение правильным способом, я получаю сообщение об ошибке, которое 'TypeError: объект 'Response' не вызываем'. Что я могу сделать по этому поводу? –