Форум сайта python.su
Приветствую!
В питоне и джанго особо не силен, поэтому прошу не пинать коленками.
Есть сайт на джанго, работал себе прекрасно, в один момент (года полтора назад) при добавлении товара начала выскакивать 500-я ошибка. При чем только при условии подгрузки изображения через форму. Ладно, на это я плюнул, решил заливать по фтп.
Вчера вдруг ниоткуда ни возмись появился новый косяк. Клиент формирует заказ, жмет кнопку отправить и на тебе - снова 500-я. При чем заказ в БД попадает, но письмо не отсылается. Грешил по началу на sendmail, но не тут то было.
Сегодня прихожу на работу и у меня перестали грузиться еще два урла с сайта + админка. Все та же ошибка, все те же данные в логах.
При всем при этом абсолютно ничего на сервере не трогал.
С самого утра пытаюсь понять в чем суть, админ сервера любезно согласился помочь, переставил полностью питона и джанго. Теперь питон 2.7 стоит, но ошибка не исчезла.
В соседней папке лежит бекап сайта от 2012 года, меняю папки местами - работать не начинает. Куда копать уже просто не понимаю. А на носу праздники и для компании это лучшее время продаж.
Вот что пишет в логах:
mod_wsgi (pid=1285): Exception occurred processing WSGI script ‘путь_к_проекту(скрыт)/.wsgi/django.wsgi’.
Traceback (most recent call last):
File “/usr/lib/python2.7/dist-packages/django/core/handlers/wsgi.py”, line 272, in __call__
response = self.get_response(request)
File “/usr/lib/python2.7/dist-packages/django/core/handlers/base.py”, line 167, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
File “/usr/lib/python2.7/dist-packages/django/core/handlers/base.py”, line 216, in handle_uncaught_exception
return callback(request, **param_dict)
File “/usr/lib/python2.7/dist-packages/django/utils/decorators.py”, line 93, in _wrapped_view
response = view_func(request, *args, **kwargs)
File “/usr/lib/python2.7/dist-packages/django/views/defaults.py”, line 30, in server_error
t = loader.get_template(template_name) # You need to create a 500.html template.
File “/usr/lib/python2.7/dist-packages/django/template/loader.py”, line 160, in get_template
template = get_template_from_string(template, origin, template_name)
File “/usr/lib/python2.7/dist-packages/django/template/loader.py”, line 168, in get_template_from_string
return Template(source, origin, name)
File “/usr/lib/python2.7/dist-packages/django/template/base.py”, line 108, in __init__
self.nodelist = compile_string(template_string, origin)
File “/usr/lib/python2.7/dist-packages/django/template/base.py”, line 136, in compile_string
return parser.parse()
File “/usr/lib/python2.7/dist-packages/django/template/base.py”, line 239, in parse
compiled_result = compile_func(self, token)
File “/usr/lib/python2.7/dist-packages/django/template/loader_tags.py”, line 214, in do_extends
nodelist = parser.parse()
File “/usr/lib/python2.7/dist-packages/django/template/base.py”, line 239, in parse
compiled_result = compile_func(self, token)
File “/usr/lib/python2.7/dist-packages/django/template/loader_tags.py”, line 192, in do_block
nodelist = parser.parse(('endblock', ‘endblock %s’ % block_name))
File “/usr/lib/python2.7/dist-packages/django/template/base.py”, line 246, in parse
self.unclosed_block_tag(parse_until)
File “/usr/lib/python2.7/dist-packages/django/template/base.py”, line 294, in unclosed_block_tag
raise self.error(None, “Unclosed tags: %s ” % ‘, ’.join(parse_until))
TemplateSyntaxError: Unclosed tags: endblock, endblock title
import os, sys
#Add the path to 3rd party django application and to django itself.
sys.path.append('/home/***/django')
sys.path.append('/home/***')
sys.path.append('/home/***/project')
#os.environ = ''
os.environ = ‘/tmp’
os.environ = ‘project.settings’
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Офлайн
jstyleнадо пошукать по шаблонам шаблонам незакрытый тег
TemplateSyntaxError: Unclosed tags: endblock, endblock title
{% block BLOCKNAME %} ... {% endblock %} # <-- вот такой штуки где-то не хватает
Офлайн
botinagДа вот сам до этого уже допер, но фишка в том, что шаблоны месяцами не менялись.
надо пошукать по шаблонам шаблонам незакрытый тег
Офлайн
одна ошибка прикрывала другую. Незакрытый {% endblock %} нашелся в файле 500.html
теперь в конце выдает вот такую ересь:
File “/usr/lib/python2.7/dist-packages/django/template/base.py”, line 692, in _resolve_lookup
raise VariableDoesNotExist("Failed lookup for key in %r", (bit, current)) # missing attribute
VariableDoesNotExist: Failed lookup for key in u'[{}, {\\'block\\': <Block Node: container. Contents: >, <Text Node: \\'\\n \\t\\'>, <django.template.base.InclusionNode object at 0xb2cb5eec>, <Text Node: \\'\\n\\t</td>\\n\\t\\'>]>, <Text Node: \\'\\n \\n \\'>, <Block Node: content_container. Contents: >, <Text Node: \\'\\n\\t</td>\\n \\'>]>, <Text Node: \\'\\n <tr>\\n\\t<td colspan=“2”>\\'>, <Variable Node: LANG>, <Text Node: \\'.png" /></td>\\n\\t<td colspa\\'>, <django.template.loader_tags.ConstantIncludeNode object at 0xb2cb5b0c>, <Text Node: \\'\\n\\t\\t</table>\\n\\t</td>\\n</tabl\\'>]>}, {\\'block\\': <Block Node: content_left. Contents: >, <Text Node: \\'\\n \\t\\'>, <django.template.base.InclusionNode object at 0xb2cb5eec>, <Text Node: \\'\\n\\t</td>\\n\\t\\'>]>}]'
Офлайн
в /django/conf/global_settings.py я бы не лазил…
надо в settings.py вашего проекта поискать
TEMPLATE_DIRS = ()
jstyleТут неплохо знать точные условия при которых возникает ошибка и воспроизвести их в браузере.
Посоветовали включить отладчик DEBUG=True
Офлайн
jstyleВидимо где-то корявый запрос к базе. попробуйте с Debug=True, может более информационное сообщение об ошибке получите.
raise VariableDoesNotExist(“Failed lookup for key in %r”, (bit, current)) # missing attribute
Офлайн
Вроде продвинулся чуть глубже.
этот 500.html инклюдил еще один шаблон в самом начале.
Открываю его. в нем есть код:
{% block content_left %}
<td id=“pageMenu”>
{% block leftmenu %}{% endblock %}
{% banners PATH %}
</td>
{% endblock %}
Отредактировано jstyle (Дек. 18, 2014 16:09:13)
Офлайн
В общем как я понимаю дело это i18n.
Все файлы из /templates/ (включая 500.html) импортируют основной шаблон base.html и именно в нем переменная LANG почему то пустая, при чем {% trans “NEWS” %} - отлично переводится на языки в зависимости от языка в url
<a href=“/{{ LANG }}/news/”>{% trans “NEWS” %}</a>
Офлайн
если удаление
{% banners PATH %}
File “/usr/lib/python2.7/dist-packages/django/template/base.py”, line 692, in _resolve_lookup
raise VariableDoesNotExist("Failed lookup for key in %r", (bit, current)) # missing attribute
VariableDoesNotExist: Failed lookup for key in u'[{}, {\\'block\\': <Block Node: container. Contents: >, <Text Node: \\'\\n \\t\\'>, <django.template.base.InclusionNode object at 0xb2cb5eec>, <Text Node: \\'\\n\\t</td>\\n\\t\\'>]>, <Text Node: \\'\\n \\n \\'>, <Block Node: content_container. Contents: >, <Text Node: \\'\\n\\t</td>\\n \\'>]>, <Text Node: \\'\\n <tr>\\n\\t<td colspan=“2”>\\'>, <Variable Node: LANG>, <Text Node: \\'.png" /></td>\\n\\t<td colspa\\'>, <django.template.loader_tags.ConstantIncludeNode object at 0xb2cb5b0c>, <Text Node: \\'\\n\\t\\t</table>\\n\\t</td>\\n</tabl\\'>]>}, {\\'block\\': <Block Node: content_left. Contents: >, <Text Node: \\'\\n \\t\\'>, <django.template.base.InclusionNode object at 0xb2cb5eec>, <Text Node: \\'\\n\\t</td>\\n\\t\\'>]>}]'
{% load MYTAGS %}
jstyleХм.. settings.py проекта? он у вас еще где-нибудь не переопределяется?
Теперь как я понимаю и надо делать запускать отладчик? Включаю в settings.py опять ничего не происходит.
jstylemanage.py collectstatic пробовали?
в логе теперь пишутся ошибки /htdocs/media/images/mainMenu/Branches_.png - файл не найден.
Отредактировано botinag (Дек. 18, 2014 17:59:18)
Офлайн
Новые догадки:
Именно когда убираю {#% banners PATH %#} начинает работать. Судя по всему проблема в этом PATH. А вот что мне выдает шелл после подключения:
Обновление: что то накрутил, ошибку больше не выдает
Traceback (most recent call last):
File “<string>”, line 1, in <module>
ImportError: No module named virtualenvwrapper.hook_loader
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenv has been installed
for VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is set properly.
:~$ virtualenvРанее стоял питон 2.6, сейчас 2.7
Traceback (most recent call last):
File “/usr/local/bin/virtualenv”, line 5, in <module>
from pkg_resources import load_entry_point
File “/usr/lib/python2.7/dist-packages/pkg_resources.py”, line 2711, in <module>
parse_requirements(__requires__), Environment()
File “/usr/lib/python2.7/dist-packages/pkg_resources.py”, line 584, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: virtualenv==1.6.4
Отредактировано jstyle (Дек. 19, 2014 11:12:27)
Офлайн