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

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

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

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

..bw
Isem
bw
Ну тут пусть …
Там далее все ‘?’ заменить на ‘!’ и все норм.
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