Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2008 22:17:42

windoctor
От:
Зарегистрирован: 2008-01-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

Решил объеденить эти два вопроса ибо не плодить темы.

Итак первый:
Как осуществить http редирект с помощью Python, искал ответ, но пока не нашёл и поэтому использую

< .meta http-equiv='Refresh' content='1; url="url"' />
но хочеться осуществлять с помощью заголовков.

Второй вопрос:
Написал метод
def parseConfig(self, confFile):
config = ConfigParser.ConfigParser()
config.read(confFile)
try:
self["mysql_host"] = config.get('MySQL', 'host')
self["mysql_user"] = config.get('MySQL', 'user')
self["mysql_pass"] = config.get('MySQL', 'pass')
self["mysql_name"] = config.get('MySQL', 'name')
except :
print "Config File not found"
sys.exit()
Но как ни странно под вендой этод метод отработал, а вот под unix не хочет ни в какую (ругается что секция не найдена), подскажите пожалуйста как решить проблему



Отредактировано (Янв. 21, 2008 22:20:26)

Офлайн

#2 Янв. 22, 2008 07:06:55

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

windoctor
Решил объеденить эти два вопроса ибо не плодить темы.

Итак первый:
Как осуществить http редирект с помощью Python, искал ответ, но пока не нашёл и поэтому использую
< .meta http-equiv='Refresh' content='1; url="url"' />
но хочеться осуществлять с помощью заголовков.
Что на сервере?

Но как ни странно под вендой этод метод отработал, а вот под unix не хочет ни в какую (ругается что секция не найдена), подскажите пожалуйста как решить проблему
Конфиг в студию



Офлайн

#3 Янв. 22, 2008 14:41:23

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

windoctor
def parseConfig(self, confFile):
config = ConfigParser.ConfigParser()
config.read(confFile)
try:
self["mysql_host"] = config.get('MySQL', 'host')
self["mysql_user"] = config.get('MySQL', 'user')
self["mysql_pass"] = config.get('MySQL', 'pass')
self["mysql_name"] = config.get('MySQL', 'name')
except :
print "Config File not found"
sys.exit()
Но как ни странно под вендой этод метод отработал, а вот под unix не хочет ни в какую (ругается что секция не найдена), подскажите пожалуйста как решить проблему
смотрим стэктрейс… у тебя траблы с путем до файла или с парсингом???
что у тебя делаешь метод get? если просто достает из словаря - смотрим что в словаре, и почему оно там.
скорее всего проблема или в методе get или в read, в зависимости от того, как ты получаешь данные
может быть трабл в том что различаются переходы на новую строку под линуксом и виндой

P.S. ну что это за название, где тут ООП =) назвал бы метод getOptions или в этом роде, а то недолго самому запутаться что отвечает за парсинг конфига



Отредактировано (Янв. 22, 2008 14:44:22)

Офлайн

#4 Янв. 22, 2008 15:42:49

Cyxapeff
От:
Зарегистрирован: 2006-08-17
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

cybergrind
ну что это за название, где тут ООП =) назвал бы метод getOptions или в этом роде, а то недолго самому запутаться что отвечает за парсинг конфига
это тебе надо к разработчикам питона идти. Используется стандартный модуль ConfigParser.



Офлайн

#5 Янв. 22, 2008 16:17:37

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

я не про модуль, я про его собственный метод. хотя в конечно итоге именование не сама важная вещь ;)



Офлайн

#6 Янв. 23, 2008 01:37:08

windoctor
От:
Зарегистрирован: 2008-01-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

j2a
Что на сервере?
Не понял вопроса, мне нужно просто отредиректить на другой урл и всё.
Как пхп есть header ('Location: url'); вот мне нужно что-то похоже на питоне.


За критику названия метода спасибо, учёл.

Трэйс
Traceback (most recent call last):
File "/home/windoctor/www/icq-py/pir.py", line 31, in <module>
lnk.getOptions('config.ini')
File "/home/windoctor/www/icq-py/pir.py", line 16, in getOptions
self["mysql_host"] = config.get('MySQL', 'host')
File "/usr/lib/python2.5/ConfigParser.py", line 511, in get
raise NoSectionError(section)
ConfigParser.NoSectionError: No section: 'MySQL'
Сам конфиг
[MySQL]
host=locajhst
user=root
pass=python
name=py



Отредактировано (Янв. 23, 2008 01:40:48)

Офлайн

#7 Янв. 23, 2008 05:23:09

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

windoctor
j2a
Что на сервере?
Не понял вопроса, мне нужно просто отредиректить на другой урл и всё.
Как пхп есть header ('Location: url'); вот мне нужно что-то похоже на питоне.
Что-то похожее:

print ‘Location: %s’ % url



Сам конфиг
[MySQL]
host=locajhst
user=root
pass=python
name=py
Код, хоть и ужасный, но рабочий. С конфигом ничего криминального. Ищи проблемы в других местах.

>>> def getOptions(config_file):
….: config = ConfigParser()
….: config.read(config_file)
….: options = {}
….: for field in ('host', ‘user’, ‘pass’, ‘name’):
….: options = config.get('MySQL', field)
….: return options
….:

>>> getOptions('/tmp/cfg')
<<<
{'mysql_host': ‘locajhst’,
‘mysql_name’: ‘py’,
‘mysql_pass’: ‘python’,
‘mysql_user’: ‘root’}



Офлайн

#8 Янв. 23, 2008 22:07:00

windoctor
От:
Зарегистрирован: 2008-01-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

print 'Location: %s' % url
Всё шутки шутим =)
import ConfigParser

def getOptions(config_file):
config = ConfigParser.ConfigParser()
config.read(config_file)
options = {}
for field in ('host', 'user', 'pass', 'name'):
options['mysql_%s' % field] = config.get('MySQL', field)
return options
list = getOptions ('config.ini')
print list
Не отработало, ругается
Traceback (most recent call last):
File "/home/windoctor/www/icq-py/hello.py", line 11, in <module>
list = getOptions ('config.ini')
File "/home/windoctor/www/icq-py/hello.py", line 9, in getOptions
options['mysql_%s' % field] = config.get('MySQL', field)
File "/usr/lib/python2.5/ConfigParser.py", line 511, in get
raise NoSectionError(section)
ConfigParser.NoSectionError: No section: 'MySQL'
По поводу ужасного кода, полностью согласен, первое приложение на питоне (:



Офлайн

#9 Янв. 24, 2008 03:53:21

playpauseandstop
От:
Зарегистрирован: 2007-10-31
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

Как пхп есть header ('Location: url'); вот мне нужно что-то похоже на питоне.
Apache2 mod_python Documentation
"""
internal_redirect(new_uri)
     Internally redirects the request to the new_uri. new_uri must be a string. 
     The httpd server handles internal redirection by creating a new request object and processing all request
     phases. Within an internal redirect, req.prev will contain a reference to a request object from which it
     was redirected.
"""

А вообще я б делал в лоб, через:
from mod_python import apache
def redirect_to(req, url, status_code = 302):
     """
     Usage:
         def some_view(req):
             ...
             redirect_to(req, '/path/to/uri/')
     """
     req.status_code = status_code
     req.headers_out.update({'Location': url})
     req.write('')
     return apache.OK



Офлайн

#10 Янв. 24, 2008 12:44:04

windoctor
От:
Зарегистрирован: 2008-01-08
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

http редирект и пути до файлов

playpauseandstop, проблема в том, что на сервере не установлен mod_python, скрипты выполняются в папке cgi-bin.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version