Ishikawa
Апрель 29, 2014 07:25:30
Здравствуйте, помогите пожалуйста, я использую ubuntu + apache + wsgi, мне нужнго по нажатию на ссылку/кнопку реализовать скрипт который бы создавал файл на сервере с соответствующим ссылке содержанием, например при нажатии на ссылку или кнопку ‘test’ на сервере создавалася бы файл test. Я знаю что это делается с помощью POST или GET запросов, но к сожалению я больше ничего не знаю, документацию с описанием всех методов wsgi я не смог найти, может быть хотябы в качестве помощи кто-нибудь поделится документацией.
FishHook
Апрель 29, 2014 08:10:24
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
Апрель 29, 2014 08:52:12
FishHook, когда нажимаю на push me ничего не происходит. Должно было вывестись на экран GET и значение запроса foo?
FishHook
Апрель 29, 2014 09:55:34
Смотрите на консоль внизу экрана
Ishikawa
Апрель 29, 2014 10:56:48
FishHook, а, я понял, спасибо большое, попробую!
Ishikawa
Апрель 30, 2014 13:02:50
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
Апрель 30, 2014 13:15:34
А как application связано с get_req, и какая из этих функций у вас юзается в качестве wsgi-приложения?
Ishikawa
Апрель 30, 2014 13:52:26
FishHook, application это как раз wsgi приложение, get_req я как раз и хочу как-то связать, если просто вызывать его в теле application, то не работает.
FishHook
Май 1, 2014 11:17:58
Вы взялись за задачу, которая Вам явно не по росту. Вы не понимаете что такое функции, зачем они нужны и как с ними работать. Почитайте для начала хоть что-нибудь по основам программирования иначе ничего не выйдет.
Ishikawa
Май 1, 2014 11:43:10
FishHook, почему же не понимаю, я не понимаю как эти функции вызываются, что должно быть в качестве параметров. Для меня совсем не очевидно почему вообще работает application, если я его нигде не вызывал, и что у него должно быть на входе. Функция application взята с примеров из туториала по wsgi, больше там особо ничего нет и документации тоже. Пожалуйста, если вам не трудно, не могли бы вы показать как объединить все это, так чтобы у меня просто при нажатии на кнопку, которая генерируется с помощью application, выполнялось то, что вы показали, это все что мне нужно.