Уведомления

Группа в Telegram: @pythonsu

#1 Июль 3, 2013 07:57:01

Rumato
От:
Зарегистрирован: 2010-10-03
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

WSGI обработка url-ов

Добрый день! У меня такой вопрос. Есть приложение:

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
}

Я не могу понять как сделать url-ы, т.е. чтобы можно было перейти по различным адресам и при этом генерировались различные страницы. Думаю как-то в wsgi.applications добавить ссылку — вызов функции, генерации страницы.


Как данной действие можно сделать?

Заранее спасибо!





Офлайн

#2 Июль 3, 2013 08:01:28

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

WSGI обработка url-ов

Чем не нравится wergzeug ?



Офлайн

#3 Июль 3, 2013 10:45:58

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

WSGI обработка url-ов

> Я не могу понять как сделать url-ы, т.е. чтобы можно было перейти по различным адресам и при этом генерировались различные страницы.

В функции applications разбирайте параметры входящего запроса и решайте, что делать дальше, например, заверните логику каждой страницы в отдельную функцию.

Офлайн

#4 Июль 18, 2013 16:27:24

Rumato
От:
Зарегистрирован: 2010-10-03
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

WSGI обработка url-ов

В продолжение темы, в принципе я более-менее разобрался, вот

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]
  

А теперь нужно сделать чтобы по адресу /test, переходя в одноименную дирректорию, можно было получить доступ к различным изображениям. Что-то типа http://localhost/test/images.jpg, http://localhost/test/images12.jpg и т.д.
Подскажите, пожалуйста, как такое реализовать.
Что-то типа
  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 [отдаём картинку]
  
если в адресе http://localhost/test/images.jpg то тогда images.jpg, если какая-то другая то другая картинка (изображения генерируются). Заранее спасибо.



Офлайн

#5 Июль 18, 2013 23:46:39

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

WSGI обработка url-ов

А позже вам наверно понадобится работа с куками…
Возьмите webob, это обертка на environ,
пример подключения к wsgi или пример с gevent + webob
в webob есть отправка статических файлов и работа с куками

Офлайн

#6 Июль 19, 2013 07:00:57

Rumato
От:
Зарегистрирован: 2010-10-03
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

WSGI обработка url-ов

Нет, там больше ничего не понадобится, только то что написал. За ссылки спасибо, но хотелось бы разобраться как это без библиотек сделать, тем что есть.



Офлайн

#7 Июль 19, 2013 10:02:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9747
Репутация: +  843  -
Профиль   Отправить e-mail  

WSGI обработка url-ов

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
>>>



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version