Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 7, 2011 13:32:52

Izengardjke
От:
Зарегистрирован: 2011-08-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с веб-приложением

Начал осваивать питон для создания веб-приложений. Написал простенький код:

import sys, os
sys.stdout.buffer.write(b'Content-type: text/html;charset=utf-8\n\n')
os.dup2(1, 2)
print('Hello')
сначала все работало нормально, но потом в idle начал вылетать traceback
Traceback (most recent call last):
File "Z:\home\pythonweb\www\main.py", line 2, in <module>
sys.stdout.buffer.write(b'Content-type: text/html;charset=utf-8\n\n')
AttributeError: buffer
На ideone.com вроде нормально компилится: http://ideone.com/kyypI
Прошу помочь с проблемой.



Офлайн

#2 Авг. 7, 2011 13:39:18

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Проблема с веб-приложением

print 'Content-type: text/html;charset=utf-8'
print
print 'Hello'
Это для Python 2x.
А что там за хрень такая, buffer? Убрать к едрене фене!
А точно CGI нужно? Его использование сейчас крайняя редкость и мало чем оправдано (только ленью)?

..bw



Офлайн

#3 Авг. 7, 2011 13:56:39

Izengardjke
От:
Зарегистрирован: 2011-08-07
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с веб-приложением

bw
А что там за хрень такая, buffer? Убрать к едрене фене!
Хотелось бы хотя бы узнать, к чему такая ненависть к этой штуке. Консультировался с одним товарищем, у него работает прекрасно. На третьей версии, угу.
bw
А точно CGI нужно?
Точно.



Офлайн

#4 Авг. 7, 2011 14:16:38

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Проблема с веб-приложением

> к чему такая ненависть к этой штуке
Ну тут пусть ещё умные дядьки подойдут и поправят меня. Но дело примерно так обстоит; sys.stdout обязан реализовывать файлоподобный объект, в данном случае (выход, т.е. запись) это методы: write, и опционально flush и close (в виде заглушек?); заглушек, потому что клиентский код не должен их использовать (по нормальному). sys.stdout может быть заменён своим объектом, если он выполняет это требование (файлоподобие). buffer это какая-то особенность реализации, не являющаяся стандартом (?) и значит надежды на неё никакой, от среды к среде и от версии к версии среды, эта штука не только может появляться/исчезать, но и смысл и механизм её работы может меняться.

В данном случае, в одной среде эта штука есть и почему-то работает, а вот в IDLE её нет (а с какой собственно).
Так что предлагаю вырвать глаз тому кто посоветовал обращаться к нестандартным плюшкам некой среды (некой реализации sys.stdout).

p.s. Если не устраивает print, делаем через sys.stdout.write; print один хрен всё в этот stdout посылает.

..bw



Офлайн

#5 Авг. 7, 2011 15:24:05

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Проблема с веб-приложением

bw
Ну тут пусть …
Там далее все ‘?’ заменить на ‘!’ и все норм.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version