The 'pdf_en' attribute has no file associated with it.
Request Method: | GET |
---|---|
Request URL: | http://127.0.0.1:4575/en/products/lasers/ |
Django Version: | 1.5.1 |
Exception Type: | ValueError |
Exception Value: | The 'pdf_en' attribute has no file associated with it. |
Exception Location: | /home/lightfactory/venv/local/lib/python2.7/site-packages/django/db/models/fields/files.py in _require_file, line 41 |
Python Executable: | /home/lightfactory/venv/bin/python |
Python Version: | 2.7.6 |
Python Path: | ['/home/lightfactory/lightfactory', '/home/lightfactory', '/home/lightfactory/venv/bin', '/home/lightfactory/venv/lib/python2.7', '/home/lightfactory/venv/lib/python2.7/plat-x86_64-linux-gnu', '/home/lightfactory/venv/lib/python2.7/lib-tk', '/home/lightfactory/venv/lib/python2.7/lib-old', '/home/lightfactory/venv/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/home/lightfactory/venv/local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages/greenlet-0.4.3-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/gevent-1.0.1-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/site-packages', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages'] |
Server time: | Fri, 29 Mar 2024 13:14:52 +0400 |
In template /home/lightfactory/lightfactory/templates/lasers_table.html
, error at line 47
37 | <td>{{laser.name}}</td> |
---|---|
38 | <td style="text-align:right;">{{laser.power.name}}</td> |
39 | {% if lang = 'ru' %} |
40 | <td>{{laser.modal.name_ru}}</td> |
41 | {% else %} |
42 | <td>{{laser.modal.name_en}}</td> |
43 | {% endif %} |
44 | <td style="text-align:right;">{{laser.wavelength.name}}</td> |
45 | <td> |
46 | {% for body in laser.body.all %} |
47 | {% if body.pdf_ru or body.pdf_en %}<a href="/{% if lang = 'ru' %}{{body.pdf_ru.url}}{% else %}{{body.pdf_en.url}}{% endif %}" target="_blank">{{body.name}}</a>{% else %}{{body.name}}{% endif %}{% if not forloop.last %}, {% endif %} |
48 | {% endfor %} |
49 | </td> |
50 | <td> |
51 | {% if lang = 'ru' %} |
52 | {% if laser.pdf_ru %} |
53 | <a href="/{{laser.pdf_ru.url}}" target="_blank">{{laser.name}}.pdf</a> |
54 | {% endif %} |
55 | {% else %} |
56 | {% if laser.pdf_en %} |
57 | <a href="/{{laser.pdf_en.url}}" target="_blank">{{laser.name}}.pdf</a> |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/core/handlers/base.py
in get_response
for middleware_method in self._view_middleware:
response = middleware_method(request, callback, callback_args, callback_kwargs)
if response:
break
if response is None:
try:
response = callback(request, *callback_args, **callback_kwargs)...
except Exception as e:
# If the view raised an exception, run it through exception
# middleware, and if the exception middleware returns a
# response, use that. Otherwise, reraise the exception.
for middleware_method in self._exception_middleware:
response = middleware_method(request, e)
Variable | Value |
---|---|
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
callback_args | () |
resolver_match | ResolverMatch(func=<function productspage at 0x7fc32f7f5398>, args=(), kwargs={'lang': 'en', 'slug': u'lasers'}, url_name='main.views.productspage', app_name='None', namespace='') |
middleware_method | <bound method MessageMiddleware.process_request of <django.contrib.messages.middleware.MessageMiddleware object at 0x7fc32f81af10>> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7fc32fb12c90> |
request | "<WSGIRequest\npath:/en/products/lasers/,\nGET:<QueryDict: {}>,\nPOST:<QueryDict: {}>,\nCOOKIES:{},\nMETA:{'HTTP_ACCEPT': '*/*',\n 'HTTP_CONNECTION': 'close',\n 'HTTP_HOST': '127.0.0.1:4575',\n 'HTTP_USER_AGENT': 'claudebot',\n 'PATH_INFO': u'/en/products/lasers/',\n 'QUERY_STRING': '',\n 'RAW_URI': '/en/products/lasers/',\n 'REMOTE_ADDR': '127.0.0.1',\n 'REMOTE_PORT': '52982',\n 'REQUEST_METHOD': 'GET',\n 'SCRIPT_NAME': u'',\n 'SERVER_NAME': '127.0.0.1',\n 'SERVER_PORT': '4575',\n 'SERVER_PROTOCOL': 'HTTP/1.0',\n 'SERVER_SOFTWARE': 'gunicorn/19.1.1',\n 'gunicorn.socket': <socket at 0x7fc32f7e75d0 fileno=12 sock=127.0.0.1:4575 peer=127.0.0.1:52982>,\n 'wsgi.errors': <gunicorn.http.wsgi.WSGIErrorsWraper object at 0x7fc32f7be690>,\n 'wsgi.file_wrapper': <class 'gunicorn.http.wsgi.FileWrapper'>,\n 'wsgi.input': <gunicorn.http.body.Body object at 0x7fc32f7be210>,\n 'wsgi.multiprocess': False,\n 'wsgi.multithread': True,\n 'wsgi.run_once': False,\n 'wsgi.url_scheme': 'http',\n 'wsgi.version': (1, 0)}>" |
callback | <function productspage at 0x7fc32f7f5398> |
resolver | <RegexURLResolver 'urls' (None:None) ^/> |
callback_kwargs | {'lang': 'en', 'slug': u'lasers'} |
response | None |
urlconf | 'urls' |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/utils/decorators.py
in _wrapped_view
if result is not None:
return result
if hasattr(middleware, 'process_view'):
result = middleware.process_view(request, view_func, args, kwargs)
if result is not None:
return result
try:
response = view_func(request, *args, **kwargs)...
except Exception as e:
if hasattr(middleware, 'process_exception'):
result = middleware.process_exception(request, e)
if result is not None:
return result
raise
Variable | Value |
---|---|
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
middleware | <django.middleware.gzip.GZipMiddleware object at 0x7fc32f7e7c90> |
args | () |
request | "<WSGIRequest\npath:/en/products/lasers/,\nGET:<QueryDict: {}>,\nPOST:<QueryDict: {}>,\nCOOKIES:{},\nMETA:{'HTTP_ACCEPT': '*/*',\n 'HTTP_CONNECTION': 'close',\n 'HTTP_HOST': '127.0.0.1:4575',\n 'HTTP_USER_AGENT': 'claudebot',\n 'PATH_INFO': u'/en/products/lasers/',\n 'QUERY_STRING': '',\n 'RAW_URI': '/en/products/lasers/',\n 'REMOTE_ADDR': '127.0.0.1',\n 'REMOTE_PORT': '52982',\n 'REQUEST_METHOD': 'GET',\n 'SCRIPT_NAME': u'',\n 'SERVER_NAME': '127.0.0.1',\n 'SERVER_PORT': '4575',\n 'SERVER_PROTOCOL': 'HTTP/1.0',\n 'SERVER_SOFTWARE': 'gunicorn/19.1.1',\n 'gunicorn.socket': <socket at 0x7fc32f7e75d0 fileno=12 sock=127.0.0.1:4575 peer=127.0.0.1:52982>,\n 'wsgi.errors': <gunicorn.http.wsgi.WSGIErrorsWraper object at 0x7fc32f7be690>,\n 'wsgi.file_wrapper': <class 'gunicorn.http.wsgi.FileWrapper'>,\n 'wsgi.input': <gunicorn.http.body.Body object at 0x7fc32f7be210>,\n 'wsgi.multiprocess': False,\n 'wsgi.multithread': True,\n 'wsgi.run_once': False,\n 'wsgi.url_scheme': 'http',\n 'wsgi.version': (1, 0)}>" |
kwargs | {'lang': 'en', 'slug': u'lasers'} |
view_func | <function productspage at 0x7fc32f7f5320> |
/home/lightfactory/lightfactory/main/views.py
in productspage
page = get_object_or_404(ProductsPage, slug=slug, lang=lang)
context = {'page': page, 'lang': lang}
if not page.fake:
context['menu_active'] = 'products'
if slug == 'lasers':
context.update({
'lasers_html': draw_lasers_table(request, json_answer=False, lang=lang),...
'powers': sorted(LaserPower.objects.all(), key=lambda instance: int(instance.name)),
'modals': LaserModal.objects.all(),
'wavelengths': sorted(LaserWavelength.objects.all(), key=lambda instance: int(instance.name)),
'bodies': LaserBody.objects.all(),
})
return render_to_response('lasers.html', context, RequestContext(request, {}))
Variable | Value |
---|---|
lang | 'en' |
request | "<WSGIRequest\npath:/en/products/lasers/,\nGET:<QueryDict: {}>,\nPOST:<QueryDict: {}>,\nCOOKIES:{},\nMETA:{'HTTP_ACCEPT': '*/*',\n 'HTTP_CONNECTION': 'close',\n 'HTTP_HOST': '127.0.0.1:4575',\n 'HTTP_USER_AGENT': 'claudebot',\n 'PATH_INFO': u'/en/products/lasers/',\n 'QUERY_STRING': '',\n 'RAW_URI': '/en/products/lasers/',\n 'REMOTE_ADDR': '127.0.0.1',\n 'REMOTE_PORT': '52982',\n 'REQUEST_METHOD': 'GET',\n 'SCRIPT_NAME': u'',\n 'SERVER_NAME': '127.0.0.1',\n 'SERVER_PORT': '4575',\n 'SERVER_PROTOCOL': 'HTTP/1.0',\n 'SERVER_SOFTWARE': 'gunicorn/19.1.1',\n 'gunicorn.socket': <socket at 0x7fc32f7e75d0 fileno=12 sock=127.0.0.1:4575 peer=127.0.0.1:52982>,\n 'wsgi.errors': <gunicorn.http.wsgi.WSGIErrorsWraper object at 0x7fc32f7be690>,\n 'wsgi.file_wrapper': <class 'gunicorn.http.wsgi.FileWrapper'>,\n 'wsgi.input': <gunicorn.http.body.Body object at 0x7fc32f7be210>,\n 'wsgi.multiprocess': False,\n 'wsgi.multithread': True,\n 'wsgi.run_once': False,\n 'wsgi.url_scheme': 'http',\n 'wsgi.version': (1, 0)}>" |
page | <ProductsPage: Diode lasers> |
context | {'lang': 'en', 'menu_active': 'products', 'page': <ProductsPage: Diode lasers>} |
slug | u'lasers' |
/home/lightfactory/lightfactory/main/views.py
in draw_lasers_table
except json.JSONDecodeError:
return HttpResponse(json.dumps({'html': u'Ошибка!'}), mimetype='application/json; charset=utf-8')
context = {
'lasers': sorted(Laser.objects.filter(**opts), key=lambda instance: (instance.ctype.sort, int(instance.wavelength.name))),
'lang': lang,
}
html = loader.get_template('lasers_table.html').render(Context(context))...
return HttpResponse(json.dumps({'html': html}), mimetype='application/json; charset=utf-8') if json_answer else html
@require_POST
def sub_feedback(request):
try:
Variable | Value |
---|---|
lang | 'en' |
json_answer | False |
request | "<WSGIRequest\npath:/en/products/lasers/,\nGET:<QueryDict: {}>,\nPOST:<QueryDict: {}>,\nCOOKIES:{},\nMETA:{'HTTP_ACCEPT': '*/*',\n 'HTTP_CONNECTION': 'close',\n 'HTTP_HOST': '127.0.0.1:4575',\n 'HTTP_USER_AGENT': 'claudebot',\n 'PATH_INFO': u'/en/products/lasers/',\n 'QUERY_STRING': '',\n 'RAW_URI': '/en/products/lasers/',\n 'REMOTE_ADDR': '127.0.0.1',\n 'REMOTE_PORT': '52982',\n 'REQUEST_METHOD': 'GET',\n 'SCRIPT_NAME': u'',\n 'SERVER_NAME': '127.0.0.1',\n 'SERVER_PORT': '4575',\n 'SERVER_PROTOCOL': 'HTTP/1.0',\n 'SERVER_SOFTWARE': 'gunicorn/19.1.1',\n 'gunicorn.socket': <socket at 0x7fc32f7e75d0 fileno=12 sock=127.0.0.1:4575 peer=127.0.0.1:52982>,\n 'wsgi.errors': <gunicorn.http.wsgi.WSGIErrorsWraper object at 0x7fc32f7be690>,\n 'wsgi.file_wrapper': <class 'gunicorn.http.wsgi.FileWrapper'>,\n 'wsgi.input': <gunicorn.http.body.Body object at 0x7fc32f7be210>,\n 'wsgi.multiprocess': False,\n 'wsgi.multithread': True,\n 'wsgi.run_once': False,\n 'wsgi.url_scheme': 'http',\n 'wsgi.version': (1, 0)}>" |
context | {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]} |
opts | {} |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/base.py
in render
def _render(self, context):
return self.nodelist.render(context)
def render(self, context):
"Display stage -- can be called many times"
context.render_context.push()
try:
return self._render(context)...
finally:
context.render_context.pop()
def compile_string(template_string, origin):
"Compiles template_string into NodeList ready for rendering"
if settings.TEMPLATE_DEBUG:
Variable | Value |
---|---|
self | <django.template.base.Template object at 0x7fc32f7bec10> |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/base.py
in _render
def __iter__(self):
for node in self.nodelist:
for subnode in node:
yield subnode
def _render(self, context):
return self.nodelist.render(context)...
def render(self, context):
"Display stage -- can be called many times"
context.render_context.push()
try:
return self._render(context)
Variable | Value |
---|---|
self | <django.template.base.Template object at 0x7fc32f7bec10> |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/base.py
in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = self.render_node(node, context)...
else:
bit = node
bits.append(force_text(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
node | <For Node: for laser in lasers, tail_len: 15> |
bit | u'\n ' |
bits | [u' ', u'', u'\n '] |
self | [<Text Node: ' '>, <IfNode>, <Text Node: ' '>, <For Node: for laser in lasers, tail_len: 15>, <Text Node: ' </table>'>] |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/debug.py
in render_node
def compile_function_error(self, token, e):
if not hasattr(e, 'django_template_source'):
e.django_template_source = token.source
class DebugNodeList(NodeList):
def render_node(self, node, context):
try:
return node.render(context)...
except Exception as e:
if not hasattr(e, 'django_template_source'):
e.django_template_source = node.source
raise
Variable | Value |
---|---|
node | <For Node: for laser in lasers, tail_len: 15> |
self | [<Text Node: ' '>, <IfNode>, <Text Node: ' '>, <For Node: for laser in lasers, tail_len: 15>, <Text Node: ' </table>'>] |
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py
in render
else:
context[self.loopvars[0]] = item
# In TEMPLATE_DEBUG mode provide source of the node which
# actually raised the exception
if settings.TEMPLATE_DEBUG:
for node in self.nodelist_loop:
try:
nodelist.append(node.render(context))...
except Exception as e:
if not hasattr(e, 'django_template_source'):
e.django_template_source = node.source
raise
else:
for node in self.nodelist_loop:
Variable | Value |
---|---|
node | <For Node: for body in laser.body.all, tail_len: 4> |
len_values | 55 |
pop_context | False |
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
item | <Laser: DLF-20SM-405> |
loop_dict | {'140476291601168': 1, u'counter': 1, u'counter0': 0, u'first': True, u'last': False, u'parentloop': {}, u'revcounter': 55, u'revcounter0': 54} |
self | <For Node: for laser in lasers, tail_len: 15> |
parentloop | {} |
i | 0 |
values | [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>] |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
nodelist | [u'\n ', u'\n \n \n <h2>Blue LD</h2>\n \n \n <table class="light_table" cellpadding="0" cellspacing="0" style="width: 100%;">\n \n <tr>\n <th style="width:150px">Name</th>\n <th style="width:150px">Output power, mW</th>\n <th style="width:150px">Mode structure</th>\n <th style="width:100px">Wavelength, nm</th>\n <th style="width:120px">Package type</th>\n <th style="width:130px">Specification</th>\n </tr>\n \n ', u'\n <tr>\n <td>', u'DLF-20SM-405', u'</td>\n <td style="text-align:right;">', u'20', u'</td>\n ', u'\n <td>single mode</td>\n ', u'\n <td style="text-align:right;">', u'405', u'</td>\n <td>\n '] |
unpack | False |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py
in render
else:
context[self.loopvars[0]] = item
# In TEMPLATE_DEBUG mode provide source of the node which
# actually raised the exception
if settings.TEMPLATE_DEBUG:
for node in self.nodelist_loop:
try:
nodelist.append(node.render(context))...
except Exception as e:
if not hasattr(e, 'django_template_source'):
e.django_template_source = node.source
raise
else:
for node in self.nodelist_loop:
Variable | Value |
---|---|
node | <IfNode> |
len_values | 1 |
pop_context | False |
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
item | <LaserBody: ТО-38> |
loop_dict | {u'counter': 1, u'counter0': 0, u'first': True, u'last': True, u'parentloop': {'140476291601168': 1, u'counter': 1, u'counter0': 0, u'first': True, u'last': False, u'parentloop': {}, u'revcounter': 55, u'revcounter0': 54}, u'revcounter': 1, u'revcounter0': 0} |
self | <For Node: for body in laser.body.all, tail_len: 4> |
parentloop | {'140476291601168': 1, u'counter': 1, u'counter0': 0, u'first': True, u'last': False, u'parentloop': {}, u'revcounter': 55, u'revcounter0': 54} |
i | 0 |
values | [<LaserBody: ТО-38>] |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
nodelist | [u'\n '] |
unpack | False |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py
in render
match = condition.eval(context)
except VariableDoesNotExist:
match = None
else: # else clause
match = True
if match:
return nodelist.render(context)...
return ''
class RegroupNode(Node):
def __init__(self, target, expression, var_name):
self.target, self.expression = target, expression
Variable | Value |
---|---|
self | <IfNode> |
match | <FieldFile: pubfiles/laserbodies/ru/TO-38.PDF> |
nodelist | [<Text Node: '<a href="/'>, <IfNode>, <Text Node: '" target="_blank">'>, <Variable Node: body.name>, <Text Node: '</a>'>] |
condition | (or (literal <django.template.base.FilterExpression object at 0x7fc32f706e10>) (literal <django.template.base.FilterExpression object at 0x7fc32f706f10>)) |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/base.py
in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = self.render_node(node, context)...
else:
bit = node
bits.append(force_text(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
node | <IfNode> |
bit | u'<a href="/' |
bits | [u'<a href="/'] |
self | [<Text Node: '<a href="/'>, <IfNode>, <Text Node: '" target="_blank">'>, <Variable Node: body.name>, <Text Node: '</a>'>] |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/debug.py
in render_node
def compile_function_error(self, token, e):
if not hasattr(e, 'django_template_source'):
e.django_template_source = token.source
class DebugNodeList(NodeList):
def render_node(self, node, context):
try:
return node.render(context)...
except Exception as e:
if not hasattr(e, 'django_template_source'):
e.django_template_source = node.source
raise
Variable | Value |
---|---|
node | <IfNode> |
self | [<Text Node: '<a href="/'>, <IfNode>, <Text Node: '" target="_blank">'>, <Variable Node: body.name>, <Text Node: '</a>'>] |
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/defaulttags.py
in render
match = condition.eval(context)
except VariableDoesNotExist:
match = None
else: # else clause
match = True
if match:
return nodelist.render(context)...
return ''
class RegroupNode(Node):
def __init__(self, target, expression, var_name):
self.target, self.expression = target, expression
Variable | Value |
---|---|
self | <IfNode> |
match | True |
nodelist | [<Variable Node: body.pdf_en.url>] |
condition | None |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/base.py
in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = self.render_node(node, context)...
else:
bit = node
bits.append(force_text(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
node | <Variable Node: body.pdf_en.url> |
self | [<Variable Node: body.pdf_en.url>] |
bits | [] |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/debug.py
in render_node
def compile_function_error(self, token, e):
if not hasattr(e, 'django_template_source'):
e.django_template_source = token.source
class DebugNodeList(NodeList):
def render_node(self, node, context):
try:
return node.render(context)...
except Exception as e:
if not hasattr(e, 'django_template_source'):
e.django_template_source = node.source
raise
Variable | Value |
---|---|
node | <Variable Node: body.pdf_en.url> |
self | [<Variable Node: body.pdf_en.url>] |
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/debug.py
in render
e.django_template_source = node.source
raise
class DebugVariableNode(VariableNode):
def render(self, context):
try:
output = self.filter_expression.resolve(context)...
output = template_localtime(output, use_tz=context.use_tz)
output = localize(output, use_l10n=context.use_l10n)
output = force_text(output)
except UnicodeDecodeError:
return ''
except Exception as e:
Variable | Value |
---|---|
self | <Variable Node: body.pdf_en.url> |
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/base.py
in resolve
self.filters = filters
self.var = var_obj
def resolve(self, context, ignore_failures=False):
if isinstance(self.var, Variable):
try:
obj = self.var.resolve(context)...
except VariableDoesNotExist:
if ignore_failures:
obj = None
else:
if settings.TEMPLATE_STRING_IF_INVALID:
global invalid_var_format_string
Variable | Value |
---|---|
self | <django.template.base.FilterExpression object at 0x7fc32f75d9d0> |
ignore_failures | False |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/base.py
in resolve
var)
self.lookups = tuple(var.split(VARIABLE_ATTRIBUTE_SEPARATOR))
def resolve(self, context):
"""Resolve this variable against a given context."""
if self.lookups is not None:
# We're dealing with a variable that needs to be resolved
value = self._resolve_lookup(context)...
else:
# We're dealing with a literal, so it's already been "resolved"
value = self.literal
if self.translate:
if self.message_context:
return pgettext_lazy(self.message_context, value)
Variable | Value |
---|---|
self | <Variable: u'body.pdf_en.url'> |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/template/base.py
in _resolve_lookup
current = context
try: # catch-all for silent variable failures
for bit in self.lookups:
try: # dictionary lookup
current = current[bit]
except (TypeError, AttributeError, KeyError, ValueError):
try: # attribute lookup
current = getattr(current, bit)...
except (TypeError, AttributeError):
try: # list-index lookup
current = current[int(bit)]
except (IndexError, # list index out of range
ValueError, # invalid literal for int()
KeyError, # current is a dict without `int(bit)` key
Variable | Value |
---|---|
current | <FieldFile: None> |
bit | u'url' |
e | ValueError("The 'pdf_en' attribute has no file associated with it.",) |
self | <Variable: u'body.pdf_en.url'> |
context | [{'False': False, 'None': None, 'True': True}, {'lang': 'en', 'lasers': [<Laser: DLF-20SM-405>, <Laser: DLF-250M-405>, <Laser: DLF-50M-445>, <Laser: DLF-1WM-445>, <Laser: DLF-1.5WM-445>, <Laser: DLF-50M-525>, <Laser: DLF-5SM-640>, <Laser: DLF-5SM-650>, <Laser: DLF-100M-650>, <Laser: DLF-5SM-660>, <Laser: DLF-30M-660>, <Laser: DLF-50M-660>, <Laser: DLF-100M-660>, <Laser: DLF-250M-660>, <Laser: DLF-500M-660>, <Laser: DLF-5SM-670>, <Laser: DLF-30M-670>, <Laser: DLF-50M-670>, <Laser: DLF-100M-670>, <Laser: DLF-250M-670>, <Laser: DLF-500M-670>, <Laser: DLF-5SM-680>, <Laser: DLF-30M-680>, <Laser: DLF-50M-680>, <Laser: DLF-100M-680>, <Laser: DLF-250M-680>, <Laser: DLF-5SM-690>, <Laser: DLF-30M-690>, <Laser: DLF-50M-690>, <Laser: DLF-500M-760>, <Laser: DLF-1WM-760>, <Laser: DLF-1.5WM-760>, <Laser: DLF-500M-770>, <Laser: DLF-1WM-770>, <Laser: DLF-500M-790>, <Laser: DLF-1WM-790>, <Laser: DLF-1.5WM-790>, <Laser: DLF-250M-810>, <Laser: DLF-500M-810>, <Laser: DLF-1WM-810>, <Laser: DLF-1.5WM-810>, <Laser: DLF-2WM-810>, <Laser: DLF-4WM-810>, <Laser: DLF-8WM-810>, <Laser: DLF-250M-850>, <Laser: DLF-500M-850>, <Laser: DLF-1WM-850>, <Laser: DLF-1.5WM-850>, <Laser: DLF-2WM-940>, <Laser: DLF-3WM-940>, <Laser: DLF-10WM-940>, <Laser: DLF-2WM-980>, <Laser: DLF-3WM-980>, <Laser: DLF-2WM-1060>, <Laser: DLF-3WM-1060>]}, {u'forloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'laser': <Laser: DLF-20SM-405>}, {u'forloop': {u'revcounter0': 0, u'last': True, u'counter': 1, u'parentloop': {u'revcounter0': 54, u'last': False, u'counter': 1, u'parentloop': {}, '140476291601168': 1, u'revcounter': 55, u'counter0': 0, u'first': True}, u'revcounter': 1, u'counter0': 0, u'first': True}, u'body': <LaserBody: ТО-38>}] |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/db/models/fields/files.py
in _get_url
def _get_path(self):
self._require_file()
return self.storage.path(self.name)
path = property(_get_path)
def _get_url(self):
self._require_file()...
return self.storage.url(self.name)
url = property(_get_url)
def _get_size(self):
self._require_file()
if not self._committed:
Variable | Value |
---|---|
self | <FieldFile: None> |
/home/lightfactory/venv/local/lib/python2.7/site-packages/django/db/models/fields/files.py
in _require_file
# The standard File contains most of the necessary properties, but
# FieldFiles can be instantiated without a name, so that needs to
# be checked for here.
def _require_file(self):
if not self:
raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)...
def _get_file(self):
self._require_file()
if not hasattr(self, '_file') or self._file is None:
self._file = self.storage.open(self.name, 'rb')
return self._file
Variable | Value |
---|---|
self | <FieldFile: None> |
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
wsgi.multiprocess | False |
SERVER_SOFTWARE | 'gunicorn/19.1.1' |
SCRIPT_NAME | u'' |
REQUEST_METHOD | 'GET' |
PATH_INFO | u'/en/products/lasers/' |
SERVER_PROTOCOL | 'HTTP/1.0' |
QUERY_STRING | '' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_CONNECTION | 'close' |
SERVER_NAME | '127.0.0.1' |
REMOTE_PORT | '52982' |
wsgi.url_scheme | 'http' |
SERVER_PORT | '4575' |
wsgi.input | <gunicorn.http.body.Body object at 0x7fc32f7be210> |
HTTP_HOST | '127.0.0.1:4575' |
wsgi.multithread | True |
HTTP_ACCEPT | '*/*' |
wsgi.version | (1, 0) |
RAW_URI | '/en/products/lasers/' |
wsgi.run_once | False |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWraper object at 0x7fc32f7be690> |
REMOTE_ADDR | '127.0.0.1' |
gunicorn.socket | <socket at 0x7fc32f7e75d0 fileno=12 sock=127.0.0.1:4575 peer=127.0.0.1:52982> |
wsgi.file_wrapper | '' |
lightfactory.settings
Setting | Value |
---|---|
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
CSRF_COOKIE_SECURE | False |
LANGUAGE_CODE | 'en-us' |
ROOT_URLCONF | 'urls' |
MANAGERS | () |
DEFAULT_CHARSET | 'utf-8' |
STATIC_ROOT | '/home/lightfactory/lightfactory/templates' |
ALLOWED_HOSTS | ['*'] |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
EMAIL_SUBJECT_PREFIX | '[Django] ' |
FILE_UPLOAD_PERMISSIONS | None |
STATICFILES_FINDERS | ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder') |
SESSION_CACHE_ALIAS | 'default' |
SESSION_COOKIE_DOMAIN | None |
SESSION_COOKIE_NAME | 'sessionid' |
ADMIN_FOR | () |
TIME_INPUT_FORMATS | ('%H:%M:%S', '%H:%M') |
DATABASES | {'default': {'ENGINE': 'django.db.backends.sqlite3', 'HOST': '', 'NAME': '/home/lightfactory/lightfactory/../data/lightfactory.db', 'OPTIONS': {}, 'PASSWORD': u'********************', 'PORT': '', 'TEST_CHARSET': None, 'TEST_COLLATION': None, 'TEST_MIRROR': None, 'TEST_NAME': None, 'TIME_ZONE': 'Europe/Moscow', 'USER': 'tbird'}} |
SERVER_EMAIL | 'root@localhost' |
FILE_UPLOAD_HANDLERS | ('django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler') |
DEFAULT_CONTENT_TYPE | 'text/html' |
APPEND_SLASH | True |
FIRST_DAY_OF_WEEK | 0 |
DATABASE_ROUTERS | [] |
YEAR_MONTH_FORMAT | 'F Y' |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
SESSION_COOKIE_PATH | '/' |
MIDDLEWARE_CLASSES | ('django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') |
USE_I18N | True |
THOUSAND_SEPARATOR | ',' |
SECRET_KEY | u'********************' |
LANGUAGE_COOKIE_NAME | 'django_language' |
DEFAULT_INDEX_TABLESPACE | '' |
TRANSACTIONS_MANAGED | False |
LOGGING_CONFIG | 'django.utils.log.dictConfig' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SEND_BROKEN_LINK_EMAILS | False |
TEMPLATE_LOADERS | ('django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader') |
WSGI_APPLICATION | 'wsgi.application' |
TEMPLATE_DEBUG | True |
X_FRAME_OPTIONS | 'SAMEORIGIN' |
AUTHENTICATION_BACKENDS | ('django.contrib.auth.backends.ModelBackend',) |
FORCE_SCRIPT_NAME | None |
USE_X_FORWARDED_HOST | False |
MAIL_FROM | 'root@lightfactory.ru' |
SESSION_COOKIE_SECURE | False |
CSRF_COOKIE_DOMAIN | None |
FILE_CHARSET | 'utf-8' |
DEBUG | True |
SESSION_FILE_PATH | None |
DEFAULT_FILE_STORAGE | 'django.core.files.storage.FileSystemStorage' |
INSTALLED_APPS | ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'main', 'django.contrib.admin') |
LANGUAGES | (('af', 'Afrikaans'), ('ar', 'Arabic'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy-nl', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-tw', 'Traditional Chinese')) |
COMMENTS_ALLOW_PROFANITIES | False |
STATICFILES_DIRS | () |
PREPEND_WWW | False |
SECURE_PROXY_SSL_HEADER | None |
SESSION_COOKIE_HTTPONLY | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
FOLDER_PREFIX | '' |
MONTH_DAY_FORMAT | 'F j' |
LOGIN_URL | '/accounts/login/' |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
TIME_FORMAT | 'P' |
AUTH_USER_MODEL | 'auth.User' |
DATE_INPUT_FORMATS | ('%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y') |
CSRF_COOKIE_NAME | 'csrftoken' |
EMAIL_HOST_PASSWORD | u'********************' |
PASSWORD_RESET_TIMEOUT_DAYS | u'********************' |
CACHE_MIDDLEWARE_ALIAS | 'default' |
SESSION_SAVE_EVERY_REQUEST | False |
ADMIN_MEDIA_PREFIX | '/templates/admin/' |
NUMBER_GROUPING | 0 |
SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
CSRF_COOKIE_PATH | '/' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
PROJECT_ROOT | '/home/lightfactory/lightfactory/' |
DECIMAL_SEPARATOR | '.' |
IGNORABLE_404_URLS | () |
SITE_ID | 1 |
LOCALE_PATHS | () |
TEMPLATE_STRING_IF_INVALID | '' |
LOGOUT_URL | '/accounts/logout/' |
EMAIL_USE_TLS | False |
FIXTURE_DIRS | () |
EMAIL_HOST | 'localhost' |
DATE_FORMAT | 'N j, Y' |
MEDIA_ROOT | '' |
LOCAL_ENVIRONMENT | False |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
ADMINS | () |
FORMAT_MODULE_PATH | None |
DEFAULT_FROM_EMAIL | 'webmaster@localhost' |
MEDIA_URL | '' |
DATETIME_FORMAT | 'N j, Y, P' |
TEMPLATE_DIRS | ('/home/lightfactory/lightfactory/templates',) |
MAIL_TO | ['mikhaylov1985@gmail.com'] |
DISALLOWED_USER_AGENTS | () |
ALLOWED_INCLUDE_ROOTS | () |
LOGGING | {} |
SHORT_DATE_FORMAT | 'm/d/Y' |
TEST_RUNNER | 'django.test.simple.DjangoTestSuiteRunner' |
CACHE_MIDDLEWARE_KEY_PREFIX | u'********************' |
TIME_ZONE | 'Europe/Moscow' |
FILE_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.EmailBackend' |
DEFAULT_TABLESPACE | '' |
TEMPLATE_CONTEXT_PROCESSORS | ('django.contrib.auth.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.static', 'django.core.context_processors.tz', 'django.contrib.messages.context_processors.messages') |
SESSION_COOKIE_AGE | 1209600 |
SETTINGS_MODULE | 'lightfactory.settings' |
USE_ETAGS | False |
LANGUAGES_BIDI | ('he', 'ar', 'fa') |
FILE_UPLOAD_TEMP_DIR | None |
INTERNAL_IPS | () |
STATIC_URL | '/templates/' |
EMAIL_PORT | 25 |
USE_TZ | False |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
PASSWORD_HASHERS | u'********************' |
ABSOLUTE_URL_OVERRIDES | {} |
CACHE_MIDDLEWARE_SECONDS | 600 |
DATETIME_INPUT_FORMATS | ('%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y') |
EMAIL_HOST_USER | '' |
PROFANITIES_LIST | u'********************' |
You're seeing this error because you have DEBUG = True
in your
Django settings file. Change that to False
, and Django will
display a standard 500 page.