Форум сайта python.su
Добрый день! У меня такой вопрос. Есть приложение:
import sys import os import eventlet from eventlet import wsgi def application(environ, start_response): try: status = '200 OK' f = open(r'./template/base.html') output = f.read() f.close() response_headers = [('Content-type', 'html'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output] except: status = "500 Error" response_headers = [("content-type", "text/plain")] start_response(status, response_headers, sys.exc_info()) return ["Error"] wsgi.applications = { '': application, '/map': map111, '/test': application }
Офлайн
Чем не нравится wergzeug ?
Офлайн
> Я не могу понять как сделать url-ы, т.е. чтобы можно было перейти по различным адресам и при этом генерировались различные страницы.
В функции applications разбирайте параметры входящего запроса и решайте, что делать дальше, например, заверните логику каждой страницы в отдельную функцию.
Офлайн
В продолжение темы, в принципе я более-менее разобрался, вот
def application(environ, start_response): if environ['PATH_INFO'] == '/': status = '200 OK' f = open(r'./template/base.html') output = f.read() f.close() response_headers = [('Content-type', 'html'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output] elif environ['PATH_INFO'] == '/getdata': status = '200 OK' f = open(r'./template/send.html') output = f.read() f.close() response_headers = [('Content-type', 'html'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output]
elif environ['PATH_INFO'] == '/test': status = '200 OK' ссылка на картинку берём картинку response_headers = [('Content-type', 'image/png'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [отдаём картинку]
Офлайн
А позже вам наверно понадобится работа с куками…
Возьмите webob, это обертка на environ,
пример подключения к wsgi или пример с gevent + webob
в webob есть отправка статических файлов и работа с куками
Офлайн
Нет, там больше ничего не понадобится, только то что написал. За ссылки спасибо, но хотелось бы разобраться как это без библиотек сделать, тем что есть.
Офлайн
Rumatoсначала построй точный алгоритм
но хотелось бы разобраться как это без библиотек сделать
Rumato
если в адресе http://localhost/test/images.jpg то тогда images.jpg
>>> url = 'http://localhost/test/images.jpg' >>> fname = url.rsplit('/', 1)[-1] >>> lpath = 'dir/{}'.format(fname) >>> print(lpath) dir/images.jpg >>>
Офлайн