Эквивалент PHP "echo что-то; exit ();" с питоном / джанго? - PullRequest
19 голосов
/ 01 мая 2010

Иногда лучший способ отладить что-либо - это напечатать что-нибудь на страницу, и exit(), как мне это сделать на сайте Python / Django?

например. в PHP:

echo $var;
exit();

Спасибо

Ответы [ 4 ]

16 голосов
/ 01 мая 2010

Поместите это в функцию просмотра:

from django.http import HttpResponse
return HttpResponse(str(var))
14 голосов
/ 01 мая 2010

Я просто хотел дать альтернативный ответ: просто используйте print заявления и обслуживайте свой сайт django с python manage.py runserver

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

1 голос
/ 01 мая 2010

Если вы используете mod_wsgi, вы можете сказать:

print var
raise SystemExit

Исключение SystemExit на самом деле не приведет к завершению всего процесса, как это обычно происходит, а только к тому, что этот запрос завершится, при условии, что ни один код более высокого уровня не перехватит его и проигнорирует.

Убедитесь, что вы используете mod_wsgi 3.X. Если вы используете более старый mod_wsgi, вам нужно будет сказать:

import sys
print >> sys.stderr
raise SystemExit

Другие WSGI-серверы могут также обрабатывать SystemExit в запросе аналогичным образом, например, вам необходимо поэкспериментировать с тем, что происходит при использовании другого хостинг-решения.

Для получения дополнительной информации об отладке приложений WSGI читайте:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques

0 голосов
/ 01 мая 2010

Если вы не хотите аварийно завершить работу mod_wsgi при печати, сделайте это в вашем файле wsgi

sys.stdout = sys.stderr

отпечатки будут отправлены в журнал error_log

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...