Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 18, 2014 14:34:07

jstyle
Зарегистрирован: 2014-12-18
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

Приветствую!

В питоне и джанго особо не силен, поэтому прошу не пинать коленками.

Есть сайт на джанго, работал себе прекрасно, в один момент (года полтора назад) при добавлении товара начала выскакивать 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

и вот еще сам django.wsgi (путь скрыл целях безопасности):
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()

Буду очень благодарен если кто-либо хоть намекнет куда копать..

Офлайн

#2 Дек. 18, 2014 15:11:22

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

jstyle
TemplateSyntaxError: Unclosed tags: endblock, endblock title
надо пошукать по шаблонам шаблонам незакрытый тег
{% block BLOCKNAME %}
...
{% endblock %} # <-- вот такой штуки где-то не хватает

Офлайн

#3 Дек. 18, 2014 15:23:33

jstyle
Зарегистрирован: 2014-12-18
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

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

правильно я понимаю, шаблоны именно в папке проекта лежат: project/templates/ -> файлы *.html ?

Посоветовали включить отладчик DEBUG=True
включал и в /django/conf/global_settings.py
и в settings'ах самого проекта, но в лог пишет тоже самое. Может он в какой другой лог более подробнее пишет? Неужели нельзя узнать где именно ему не нравиться этот {% endblock %} ?

Офлайн

#4 Дек. 18, 2014 15:31:21

jstyle
Зарегистрирован: 2014-12-18
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

одна ошибка прикрывала другую. Незакрытый {% 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\\'>]>}]'

Даже не понимаю о чем речь

Офлайн

#5 Дек. 18, 2014 15:32:13

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

в /django/conf/global_settings.py я бы не лазил…
надо в settings.py вашего проекта поискать

TEMPLATE_DIRS = ()
по прописанному пути ищите шаблоны.
также шаблоны могут лежать в папках ваших приложений, прописанных в INSTALLED_APPS = ().
ну и в самом джанго… но править их не комильфо.
jstyle
Посоветовали включить отладчик DEBUG=True
Тут неплохо знать точные условия при которых возникает ошибка и воспроизвести их в браузере.
тогда вместо 500 ошибки джанго выдаст трейсбек.

Офлайн

#6 Дек. 18, 2014 15:38:12

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

jstyle
raise VariableDoesNotExist(“Failed lookup for key in %r”, (bit, current)) # missing attribute
Видимо где-то корявый запрос к базе. попробуйте с Debug=True, может более информационное сообщение об ошибке получите.

Офлайн

#7 Дек. 18, 2014 16:04:48

jstyle
Зарегистрирован: 2014-12-18
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

Вроде продвинулся чуть глубже.
этот 500.html инклюдил еще один шаблон в самом начале.
Открываю его. в нем есть код:

{% block content_left %}
<td id=“pageMenu”>
{% block leftmenu %}{% endblock %}
{% banners PATH %}
</td>
{% endblock %}

Стираю {% banners PATH %} и тогда браузер выдает мою 500-ю. Теперь как я понимаю и надо делать запускать отладчик? Включаю в settings.py опять ничего не происходит.

в логе теперь пишутся ошибки /htdocs/media/images/mainMenu/Branches_.png - файл не найден.
на самом деле файлы должны называтсья Branches_.png (сайт включает русский, англ и франц.)

Другими словами я так понимаю, у меня не определен язык на этих страницах.

При этом 404.html вызывается нормально, а вот 500.html коряво. И вообще, как все же понять почему 500-я лезет изначально

Отредактировано jstyle (Дек. 18, 2014 16:09:13)

Офлайн

#8 Дек. 18, 2014 17:08:15

jstyle
Зарегистрирован: 2014-12-18
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

В общем как я понимаю дело это i18n.

Все файлы из /templates/ (включая 500.html) импортируют основной шаблон base.html и именно в нем переменная LANG почему то пустая, при чем {% trans “NEWS” %} - отлично переводится на языки в зависимости от языка в url

<a href=“/{{ LANG }}/news/”>{% trans “NEWS” %}</a>

и почему то LANG пустая именно по трем адресам:
site.ru/ru/company/
site.ru/ru/buy/
site.ru/admin/

а вот те же

site.ru/ru/partners/
site.ru/ru/assortment/ и прочие - отлично открывают…

И не пойму опять куда копать..

Офлайн

#9 Дек. 18, 2014 17:52:42

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

если удаление

{% 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 %}
в файле с вероятным путем /myapp/templatetags/mytags.py надо поискать где и как задается banners, и что за PATH в качестве аргумента он хочет.
Также стоит найти вьюху, чnо рендерит шаблон, содержащий {% banners PATH %}, и посмотреть там как этот самый PATH генерируется. Видимо там ошибка.
jstyle
Теперь как я понимаю и надо делать запускать отладчик? Включаю в settings.py опять ничего не происходит.
Хм.. settings.py проекта? он у вас еще где-нибудь не переопределяется?
jstyle
в логе теперь пишутся ошибки /htdocs/media/images/mainMenu/Branches_.png - файл не найден.
manage.py collectstatic пробовали?
{{ LANG }} - надо узнать как эта переменная попадает в контест.
Возможно это поможет.
И стоит почитать доку про интернализацию и локализацию.

Отредактировано botinag (Дек. 18, 2014 17:59:18)

Офлайн

#10 Дек. 19, 2014 10:07:20

jstyle
Зарегистрирован: 2014-12-18
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите справиться с ошибкой

Новые догадки:

Именно когда убираю {#% 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, отдает вот это:
:~$ virtualenv
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
Ранее стоял питон 2.6, сейчас 2.7
В /usr/lib/python2.7/dist-packages/ полно всякого мусора, а вот в 2.6 пусто. Но выставлен как основной и запускается именно 2.7 вроде.

Кто может помочь настроить? Готов оплатить работу в пределах разумного!

Отредактировано jstyle (Дек. 19, 2014 11:12:27)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version