Найти - Пользователи
Полная версия: Обработчик GET и POST запросов
Начало » Web » Обработчик GET и POST запросов
1 2
Ishikawa
Здравствуйте, помогите пожалуйста, я использую ubuntu + apache + wsgi, мне нужнго по нажатию на ссылку/кнопку реализовать скрипт который бы создавал файл на сервере с соответствующим ссылке содержанием, например при нажатии на ссылку или кнопку ‘test’ на сервере создавалася бы файл test. Я знаю что это делается с помощью POST или GET запросов, но к сожалению я больше ничего не знаю, документацию с описанием всех методов wsgi я не смог найти, может быть хотябы в качестве помощи кто-нибудь поделится документацией.
FishHook
from werkzeug.wrappers import Request, Response
@Request.application
def application(request):
    if "foo" in request.args:
        print "GET ", request.args["foo"]
    return Response('<html><head></head><body><form><input name="foo"><input type="submit" value="push me"></form></body></html>',
                    mimetype="text/html"
                    )
if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 4000, application)
Запускаем этот код в консоли, запускаем браузер, идем по адресу 127.0.0.1:4000
Ishikawa
FishHook, когда нажимаю на push me ничего не происходит. Должно было вывестись на экран GET и значение запроса foo?

FishHook
Смотрите на консоль внизу экрана
Ishikawa
FishHook, а, я понял, спасибо большое, попробую!
Ishikawa
FishHook, не могли бы вы мне еще немного помочь, как прикрутить этот метод к моему коду. Вот как я делал, пытался внести это внутрь, но очевидно это как-то не так делается.

#!/usr/bin/python
#-*- coding: UTF-8 -*-
from werkzeug.wrappers import Request, Response
test_button = '''
<form>
        <input type = 'hidden' name = 'foo' value = 'itworks' >
        <input type = 'submit' value = 'OK'>
</form>
'''
def application(environ, start_response):
    status = '200 OK'
    response_body = test_button
    response_headers = [('Content-type', 'text/html'), ('Content-Length', str(len(response_body)))]
    start_response(status, response_headers)
    return [response_body]
def get_req(request):
    if "foo" in request.args:
        print "GET ", request.args["foo"]
    return Response('<html><head></head><body>ITWORKS</body></html>')
FishHook
А как application связано с get_req, и какая из этих функций у вас юзается в качестве wsgi-приложения?
Ishikawa
FishHook, application это как раз wsgi приложение, get_req я как раз и хочу как-то связать, если просто вызывать его в теле application, то не работает.
FishHook
Вы взялись за задачу, которая Вам явно не по росту. Вы не понимаете что такое функции, зачем они нужны и как с ними работать. Почитайте для начала хоть что-нибудь по основам программирования иначе ничего не выйдет.
Ishikawa
FishHook, почему же не понимаю, я не понимаю как эти функции вызываются, что должно быть в качестве параметров. Для меня совсем не очевидно почему вообще работает application, если я его нигде не вызывал, и что у него должно быть на входе. Функция application взята с примеров из туториала по wsgi, больше там особо ничего нет и документации тоже. Пожалуйста, если вам не трудно, не могли бы вы показать как объединить все это, так чтобы у меня просто при нажатии на кнопку, которая генерируется с помощью application, выполнялось то, что вы показали, это все что мне нужно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB