Dealer matching query does not exist.
Request Method: | GET |
---|---|
Request URL: | http://busina.ru/eshop/product/223/ |
Django Version: | 1.3.1 |
Exception Type: | DoesNotExist |
Exception Value: | Dealer matching query does not exist. |
Exception Location: | /home/busina/local/lib/python2.7/site-packages/django/db/models/query.py in get, line 349 |
Python Executable: | /home/busina/bin/python |
Python Version: | 2.7.3 |
Python Path: | ['/home/busina', '/home/busina/bin', '/home/busina/local/lib/python2.7/site-packages/distribute-0.6.10-py2.6.egg', '/home/busina/local/lib/python2.7/site-packages/pip-0.7.2-py2.6.egg', '/home/busina/lib/python2.7', '/home/busina/lib/python2.7/plat-linux2', '/home/busina/lib/python2.7/lib-tk', '/home/busina/lib/python2.7/lib-old', '/home/busina/lib/python2.7/lib-dynload', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', '/home/busina/local/lib/python2.7/site-packages', '/home/busina/local/lib/python2.7/site-packages/PIL', '/home/busina/local/lib/python2.7/site-packages/newrelic-1.0.2.130', '/home/busina/lib/python2.7/site-packages/PIL'] |
Server time: | Птн, 29 Мар 2024 14:23:04 +0300 |
/home/busina/local/lib/python2.7/site-packages/django/core/handlers/base.py
in get_response
try:
response = callback(request, *callback_args, **callback_kwargs)
except Exception, 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)...
if response:
break
if response is None:
raise
# Complain if the view returned None (a common error).
Variable | Value |
---|---|
exceptions | <module 'django.core.exceptions' from '/home/busina/local/lib/python2.7/site-packages/django/core/exceptions.pyc'> |
e | DoesNotExist('Dealer matching query does not exist.',) |
callback_args | () |
receivers | [(<function _rollback_on_exception at 0x15a6f50>, None)] |
middleware_method | <bound method LocalStoreClearMiddleware.process_exception of <johnny.middleware.LocalStoreClearMiddleware object at 0x1503a50>> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x14c2c90> |
settings | <django.conf.LazySettings object at 0x1252e90> |
request | <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> |
callback | <function product_detail at 0x2d72230> |
resolver | <RegexURLResolver busina.urls (None:None) ^/> |
urlresolvers | <module 'django.core.urlresolvers' from '/home/busina/local/lib/python2.7/site-packages/django/core/urlresolvers.pyc'> |
callback_kwargs | {'level': 'product', 'object_id': u'223', 'queryset': [<Product: Гобеленовые настольные 30Х30>, <Product: Пяльцы гобеленовые 30Х45>, <Product: Пяльцы гобеленовые 20Х30>, <Product: Гобеленовые настольные 30Х45>, <Product: Пяльцы гобеленовые 30Х30>, <Product: Иглы для ювелирного бисера (25шт)>, <Product: Нитки для ювелирного бисера>, <Product: Маяк желаний>, <Product: Браслет Змейка>, <Product: Браслет Нежность>, <Product: Браслет Диана>, <Product: Браслет Гирлянда>, <Product: Браслет Клара>, <Product: Браслет Орешек>, <Product: Крокодил>, <Product: Мимоза>, <Product: Браслет Ундина>, <Product: Браслет Мозаика>, <Product: Колье Очарование>, <Product: Колье Нефертити>, '...(remaining elements truncated)...']} |
response | None |
urlconf | 'busina.urls' |
/home/busina/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, 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 |
---|---|
exceptions | <module 'django.core.exceptions' from '/home/busina/local/lib/python2.7/site-packages/django/core/exceptions.pyc'> |
e | DoesNotExist('Dealer matching query does not exist.',) |
callback_args | () |
receivers | [(<function _rollback_on_exception at 0x15a6f50>, None)] |
middleware_method | <bound method LocalStoreClearMiddleware.process_exception of <johnny.middleware.LocalStoreClearMiddleware object at 0x1503a50>> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x14c2c90> |
settings | <django.conf.LazySettings object at 0x1252e90> |
request | <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> |
callback | <function product_detail at 0x2d72230> |
resolver | <RegexURLResolver busina.urls (None:None) ^/> |
urlresolvers | <module 'django.core.urlresolvers' from '/home/busina/local/lib/python2.7/site-packages/django/core/urlresolvers.pyc'> |
callback_kwargs | {'level': 'product', 'object_id': u'223', 'queryset': [<Product: Гобеленовые настольные 30Х30>, <Product: Пяльцы гобеленовые 30Х45>, <Product: Пяльцы гобеленовые 20Х30>, <Product: Гобеленовые настольные 30Х45>, <Product: Пяльцы гобеленовые 30Х30>, <Product: Иглы для ювелирного бисера (25шт)>, <Product: Нитки для ювелирного бисера>, <Product: Маяк желаний>, <Product: Браслет Змейка>, <Product: Браслет Нежность>, <Product: Браслет Диана>, <Product: Браслет Гирлянда>, <Product: Браслет Клара>, <Product: Браслет Орешек>, <Product: Крокодил>, <Product: Мимоза>, <Product: Браслет Ундина>, <Product: Браслет Мозаика>, <Product: Колье Очарование>, <Product: Колье Нефертити>, '...(remaining elements truncated)...']} |
response | None |
urlconf | 'busina.urls' |
/home/busina/local/lib/python2.7/site-packages/django/views/decorators/cache.py
in _wrapped_view_func
def never_cache(view_func):
"""
Decorator that adds headers to a response so that it will
never be cached.
"""
def _wrapped_view_func(request, *args, **kwargs):
response = view_func(request, *args, **kwargs)...
add_never_cache_headers(response)
return response
return wraps(view_func, assigned=available_attrs(view_func))(_wrapped_view_func)
Variable | Value |
---|---|
args | () |
request | <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> |
view_func | <function product_detail at 0x2d721b8> |
kwargs | {'level': 'product', 'object_id': u'223', 'queryset': [<Product: Гобеленовые настольные 30Х30>, <Product: Пяльцы гобеленовые 30Х45>, <Product: Пяльцы гобеленовые 20Х30>, <Product: Гобеленовые настольные 30Х45>, <Product: Пяльцы гобеленовые 30Х30>, <Product: Иглы для ювелирного бисера (25шт)>, <Product: Нитки для ювелирного бисера>, <Product: Маяк желаний>, <Product: Браслет Змейка>, <Product: Браслет Нежность>, <Product: Браслет Диана>, <Product: Браслет Гирлянда>, <Product: Браслет Клара>, <Product: Браслет Орешек>, <Product: Крокодил>, <Product: Мимоза>, <Product: Браслет Ундина>, <Product: Браслет Мозаика>, <Product: Колье Очарование>, <Product: Колье Нефертити>, '...(remaining elements truncated)...']} |
/home/busina/busina/eshop/views.py
in product_detail
values('dealer__id').distinct()
nearest = Dealer.objects.filter(id__in=dealers, is_eshop=True, eshop_date__lte=dt.datetime.today())
extra_context = kwargs.get('extra_context', {})
extra_context.update({'dealer_havent_it': True, 'nearest': nearest})
kwargs['extra_context'] = extra_context
return object_detail(request, *args, **kwargs)...
def access_denied(request):
return render_to_response('eshop/access_denied.html',
context_instance=RequestContext(request))
Variable | Value |
---|---|
product | <Product: Браслет Ламбада> |
city_id | None |
args | () |
request | <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> |
object_id | u'223' |
kwargs | {'level': 'product', 'object_id': u'223', 'queryset': [<Product: Гобеленовые настольные 30Х30>, <Product: Пяльцы гобеленовые 30Х45>, <Product: Пяльцы гобеленовые 20Х30>, <Product: Гобеленовые настольные 30Х45>, <Product: Пяльцы гобеленовые 30Х30>, <Product: Иглы для ювелирного бисера (25шт)>, <Product: Нитки для ювелирного бисера>, <Product: Маяк желаний>, <Product: Браслет Змейка>, <Product: Браслет Нежность>, <Product: Браслет Диана>, <Product: Браслет Гирлянда>, <Product: Браслет Клара>, <Product: Браслет Орешек>, <Product: Крокодил>, <Product: Мимоза>, <Product: Браслет Ундина>, <Product: Браслет Мозаика>, <Product: Колье Очарование>, <Product: Колье Нефертити>, '...(remaining elements truncated)...']} |
dealer | None |
/home/busina/planb/registration/decorators.py
in wrap
try:
request.user = BaseUser.objects.get(id=request.user.id).as_leaf_class()
if not issubclass(request.user.__class__, BaseUser):
raise ValueError('User should be BaseUser descendant')
except:
request.user.is_dealer = False
return view_func(request, *args, **kwargs)...
wrap.__doc__ = view_func.__doc__
wrap.__name__ = view_func.__name__
return wrap
Variable | Value |
---|---|
args | () |
request | <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> |
view_func | <function object_detail at 0x2d720c8> |
kwargs | {'level': 'product', 'object_id': u'223', 'queryset': [<Product: Гобеленовые настольные 30Х30>, <Product: Пяльцы гобеленовые 30Х45>, <Product: Пяльцы гобеленовые 20Х30>, <Product: Гобеленовые настольные 30Х45>, <Product: Пяльцы гобеленовые 30Х30>, <Product: Иглы для ювелирного бисера (25шт)>, <Product: Нитки для ювелирного бисера>, <Product: Маяк желаний>, <Product: Браслет Змейка>, <Product: Браслет Нежность>, <Product: Браслет Диана>, <Product: Браслет Гирлянда>, <Product: Браслет Клара>, <Product: Браслет Орешек>, <Product: Крокодил>, <Product: Мимоза>, <Product: Браслет Ундина>, <Product: Браслет Мозаика>, <Product: Колье Очарование>, <Product: Колье Нефертити>, '...(remaining elements truncated)...']} |
/home/busina/local/lib/python2.7/site-packages/django/views/decorators/cache.py
in _wrapped_view_func
def never_cache(view_func):
"""
Decorator that adds headers to a response so that it will
never be cached.
"""
def _wrapped_view_func(request, *args, **kwargs):
response = view_func(request, *args, **kwargs)...
add_never_cache_headers(response)
return response
return wraps(view_func, assigned=available_attrs(view_func))(_wrapped_view_func)
Variable | Value |
---|---|
args | () |
request | <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> |
view_func | <function object_detail at 0x2d72050> |
kwargs | {'level': 'product', 'object_id': u'223', 'queryset': [<Product: Гобеленовые настольные 30Х30>, <Product: Пяльцы гобеленовые 30Х45>, <Product: Пяльцы гобеленовые 20Х30>, <Product: Гобеленовые настольные 30Х45>, <Product: Пяльцы гобеленовые 30Х30>, <Product: Иглы для ювелирного бисера (25шт)>, <Product: Нитки для ювелирного бисера>, <Product: Маяк желаний>, <Product: Браслет Змейка>, <Product: Браслет Нежность>, <Product: Браслет Диана>, <Product: Браслет Гирлянда>, <Product: Браслет Клара>, <Product: Браслет Орешек>, <Product: Крокодил>, <Product: Мимоза>, <Product: Браслет Ундина>, <Product: Браслет Мозаика>, <Product: Колье Очарование>, <Product: Колье Нефертити>, '...(remaining elements truncated)...']} |
/home/busina/busina/eshop/views.py
in object_detail
product_list=list(chain(novelty_list, product_list)),
current_dealer=request.session.get('dealer', None))
kwargs['extra_context'] = extra_context
del kwargs['level']
return list_detail.object_detail(request, queryset, object_id, *args, **kwargs)...
@never_cache
def product_detail(request, *args, **kwargs):
object_id = kwargs.get('object_id', None)
product = get_object_or_404(models.Product, id=object_id, is_published=True)
dealer = request.session.get('dealer')
Variable | Value |
---|---|
group_dispatcher | {<class 'busina.eshop.models.Group'>: 'object', <class 'busina.eshop.models.Category'>: 'object.group', <class 'busina.eshop.models.Product'>: 'object.category.group'} |
category_dispatcher | {<class 'busina.eshop.models.Group'>: 'None', <class 'busina.eshop.models.Category'>: 'object', <class 'busina.eshop.models.Product'>: 'object.category'} |
current_group | <Group: Бисероплетение> |
args | () |
request | <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> |
object | <Product: Браслет Ламбада> |
queryset | [<Product: Гобеленовые настольные 30Х30>, <Product: Пяльцы гобеленовые 30Х45>, <Product: Пяльцы гобеленовые 20Х30>, <Product: Гобеленовые настольные 30Х45>, <Product: Пяльцы гобеленовые 30Х30>, <Product: Иглы для ювелирного бисера (25шт)>, <Product: Нитки для ювелирного бисера>, <Product: Маяк желаний>, <Product: Браслет Змейка>, <Product: Браслет Нежность>, <Product: Браслет Диана>, <Product: Браслет Гирлянда>, <Product: Браслет Клара>, <Product: Браслет Орешек>, <Product: Крокодил>, <Product: Мимоза>, <Product: Браслет Ундина>, <Product: Браслет Мозаика>, <Product: Колье Очарование>, <Product: Колье Нефертити>, '...(remaining elements truncated)...'] |
object_id | u'223' |
current_category | <Category: Браслеты из бисера> |
product_list | [] |
novelty_list | [] |
kwargs | {'extra_context': {'current_category': <Category: Браслеты из бисера>, 'current_dealer': None, 'current_group': <Group: Бисероплетение>, 'product_list': []}} |
model | <class 'busina.eshop.models.Product'> |
extra_context | {'current_category': <Category: Браслеты из бисера>, 'current_dealer': None, 'current_group': <Group: Бисероплетение>, 'product_list': []} |
/home/busina/local/lib/python2.7/site-packages/django/views/generic/list_detail.py
in object_detail
template_object_name: obj,
}, context_processors)
for key, value in extra_context.items():
if callable(value):
c[key] = value()
else:
c[key] = value
response = HttpResponse(t.render(c), mimetype=mimetype)...
populate_xheaders(request, response, model, getattr(obj, obj._meta.pk.name))
return response
Variable | Value |
---|---|
mimetype | None |
context_processors | None |
c | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
obj | <Product: Браслет Ламбада> |
object_id | u'223' |
template_name | 'eshop/product_detail.html' |
template_name_field | None |
template_loader | <module 'django.template.loader' from '/home/busina/local/lib/python2.7/site-packages/django/template/loader.pyc'> |
queryset | [<Product: Браслет Ламбада>] |
template_object_name | 'object' |
value | None |
slug | None |
t | <django.template.base.Template object at 0x3330110> |
key | 'current_dealer' |
request | <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}> |
model | <class 'busina.eshop.models.Product'> |
extra_context | {'current_category': <Category: Браслеты из бисера>, 'current_dealer': None, 'current_group': <Group: Бисероплетение>, 'product_list': []} |
slug_field | 'slug' |
/home/busina/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 0x3330110> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/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 0x3330110> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/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):
bits.append(self.render_node(node, context))...
else:
bits.append(node)
return mark_safe(''.join([force_unicode(b) for b in bits]))
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
Variable | Value |
---|---|
node | <ExtendsNode: extends "layout3.html"> |
self | [<ExtendsNode: extends "layout3.html">] |
bits | [] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/base.py
in render_node
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
return nodes
def render_node(self, node, context):
return node.render(context)...
class TextNode(Node):
def __init__(self, s):
self.s = s
def __repr__(self):
Variable | Value |
---|---|
node | <ExtendsNode: extends "layout3.html"> |
self | [<ExtendsNode: extends "layout3.html">] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/loader_tags.py
in render
blocks = dict([(n.name, n) for n in
compiled_parent.nodelist.get_nodes_by_type(BlockNode)])
block_context.add_blocks(blocks)
break
# Call Template._render explicitly so the parser context stays
# the same.
return compiled_parent._render(context)...
class BaseIncludeNode(Node):
def __init__(self, *args, **kwargs):
self.extra_context = kwargs.pop('extra_context', {})
self.isolated_context = kwargs.pop('isolated_context', False)
super(BaseIncludeNode, self).__init__(*args, **kwargs)
Variable | Value |
---|---|
node | <ExtendsNode: extends "base.html"> |
block_context | <django.template.loader_tags.BlockContext object at 0x2fe7190> |
compiled_parent | <django.template.base.Template object at 0x2fe7c10> |
self | <ExtendsNode: extends "layout3.html"> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/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 0x2fe7c10> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/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):
bits.append(self.render_node(node, context))...
else:
bits.append(node)
return mark_safe(''.join([force_unicode(b) for b in bits]))
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
Variable | Value |
---|---|
node | <ExtendsNode: extends "base.html"> |
self | [<ExtendsNode: extends "base.html">] |
bits | [] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/base.py
in render_node
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
return nodes
def render_node(self, node, context):
return node.render(context)...
class TextNode(Node):
def __init__(self, s):
self.s = s
def __repr__(self):
Variable | Value |
---|---|
node | <ExtendsNode: extends "base.html"> |
self | [<ExtendsNode: extends "base.html">] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/loader_tags.py
in render
blocks = dict([(n.name, n) for n in
compiled_parent.nodelist.get_nodes_by_type(BlockNode)])
block_context.add_blocks(blocks)
break
# Call Template._render explicitly so the parser context stays
# the same.
return compiled_parent._render(context)...
class BaseIncludeNode(Node):
def __init__(self, *args, **kwargs):
self.extra_context = kwargs.pop('extra_context', {})
self.isolated_context = kwargs.pop('isolated_context', False)
super(BaseIncludeNode, self).__init__(*args, **kwargs)
Variable | Value |
---|---|
node | <Block Node: title. Contents: [<Variable Node: SITE_NAME|safe>]> |
blocks | {u'body': <Block Node: body. Contents: []>, u'bodyclass': <Block Node: bodyclass. Contents: [<Text Node: 'green_page'>]>, u'extrafoot': <Block Node: extrafoot. Contents: []>, u'extrahead': <Block Node: extrahead. Contents: []>, u'hiddenobjects': <Block Node: hiddenobjects. Contents: [<Text Node: ' '>, <If node>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x37b8850>, <Text Node: ' '>]>, u'title': <Block Node: title. Contents: [<Variable Node: SITE_NAME|safe>]>} |
block_context | <django.template.loader_tags.BlockContext object at 0x2fe7190> |
n | <Block Node: extrafoot. Contents: []> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
compiled_parent | <django.template.base.Template object at 0x390f2d0> |
self | <ExtendsNode: extends "base.html"> |
/home/busina/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 0x390f2d0> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/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):
bits.append(self.render_node(node, context))...
else:
bits.append(node)
return mark_safe(''.join([force_unicode(b) for b in bits]))
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
Variable | Value |
---|---|
node | <Block Node: body. Contents: []> |
self | [<Text Node: '<!DOCTYPE html PUBLIC "-/'>, <Block Node: title. Contents: [<Variable Node: SITE_NAME|safe>]>, <Text Node: '</title> <link href="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/favicon.ico" type='>, <Variable Node: MEDIA_URL>, <Text Node: 'images/favicon.ico" type='>, <Variable Node: MEDIA_URL>, <Text Node: 'css/all.css" /> <link'>, <Variable Node: MEDIA_URL>, <Text Node: 'css/opacity.css" /> <'>, <Variable Node: MEDIA_URL>, <Text Node: 'css/my.css" /> <!--[if l'>, <Variable Node: MEDIA_URL>, <Text Node: 'css/ie.css" /><![endif]--'>, <Variable Node: MEDIA_URL>, <Text Node: 'css/jquery.fancybox-1.3.4'>, <Variable Node: MEDIA_URL>, <Text Node: ''; </script> <script'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/jquery-1.4.4.min.js"><'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/masonry.pkgd.min.js"><'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/cufon.js"></script> <'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/cufon-fonts.js"></scri'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/cufon-settings.js"></s'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/jquery.fancybox-1.3.4.'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/my.js"></script> <scr'>, <Block Node: extrahead. Contents: []>, <Text Node: ' </head> <body class="'>, <Block Node: bodyclass. Contents: [<Text Node: 'green_page'>]>, <Text Node: '"> <!-- Yandex.Metrika c'>, <Block Node: body. Contents: []>, <Text Node: ' '>, <Block Node: hiddenobjects. Contents: [<Text Node: ' '>, <If node>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x37b8850>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: extrafoot. Contents: []>, <Text Node: ' <script type="text/java'>] |
bits | [u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml">\n<head>\n\t<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n\t<meta name=\'yandex-verification\' content=\'6d2112c4356ad793\' />\n\t<meta name="google-site-verification" content="Xr0AfZLAkwxYDyqQSAZInYXlc7BU2Vkmk_OeAO2BKak" />\n\t<title>', u'\u0411\u0443\u0441\u0438\u043d\u0430 — \u041c\u0430\u0433\u0430\u0437\u0438\u043d — \u0411\u0440\u0430\u0441\u043b\u0435\u0442 \u041b\u0430\u043c\u0431\u0430\u0434\u0430', u'</title>\n <link href="', u'/media/', u'images/favicon.ico" type="image/ico" rel="icon" />\n <link href="', u'/media/', u'images/favicon.ico" type="image/ico" rel="shortcut icon" />\n\n\t<link rel="stylesheet" type="text/css" href="', u'/media/', u'css/all.css" />\n <link rel="stylesheet" type="text/css" href="', u'/media/', u'css/opacity.css" />\n <link rel="stylesheet" type="text/css" href="', u'/media/', u'css/my.css" />\n\t<!--[if lt IE 9]><link rel="stylesheet" type="text/css" href="', u'/media/', u'css/ie.css" /><![endif]-->\n <link rel="stylesheet" type="text/css" href="', u'/media/', u'css/jquery.fancybox-1.3.4.css" media="screen" />\n\n <script type="text/javascript">\n window.MEDIA_URL = \'', u'/media/', u'\';\n </script>\n\t<script type="text/javascript" src="', u'/media/', u'js/jquery-1.4.4.min.js"></script>\n\t<script type="text/javascript" src="', u'/media/', u'js/masonry.pkgd.min.js"></script>\n\t<script type="text/javascript" src="', u'/media/', u'js/cufon.js"></script>\n\t<script type="text/javascript" src="', u'/media/', u'js/cufon-fonts.js"></script>\n\t<script type="text/javascript" src="', u'/media/', u'js/cufon-settings.js"></script>\n\t<script type="text/javascript" src="', u'/media/', u'js/jquery.fancybox-1.3.4.pack.js"></script>\n\t<script type="text/javascript" src="', u'/media/', u'js/my.js"></script>\n\t<script\n\t src="//code.jquery.com/ui/1.8.24/jquery-ui.min.js"\n\t integrity="sha256-UOoxwEUqhp5BSFFwqzyo2Qp4JLmYYPTHB8l+1yhZij8="\n\t crossorigin="anonymous"></script>\n ', '', u'\n</head>\n<body class="', u'blue_page altblue_page', u'">\n\t<!-- Yandex.Metrika counter -->\n\t<script type="text/javascript">\n\t (function (d, w, c) {\n\t (w[c] = w[c] || []).push(function() {\n\t try {\n\t w.yaCounter43309009 = new Ya.Metrika({\n\t id:43309009,\n\t clickmap:true,\n\t trackLinks:true,\n\t accurateTrackBounce:true,\n\t ecommerce:"dataLayer"\n\t });\n\t } catch(e) { }\n\t });\n\n\t var n = d.getElementsByTagName("script")[0],\n\t s = d.createElement("script"),\n\t f = function () { n.parentNode.insertBefore(s, n); };\n\t s.type = "text/javascript";\n\t s.async = true;\n\t s.src = "https://mc.yandex.ru/metrika/watch.js";\n\n\t if (w.opera == "[object Opera]") {\n\t d.addEventListener("DOMContentLoaded", f, false);\n\t } else { f(); }\n\t })(document, window, "yandex_metrika_callbacks");\n\t\t\twindow.dataLayer = window.dataLayer || [];\n\t</script>\n\t<noscript><div><img src="https://mc.yandex.ru/watch/43309009" style="position:absolute; left:-9999px;" alt="" /></div></noscript>\n\t<!-- /Yandex.Metrika counter -->\n '] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/base.py
in render_node
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
return nodes
def render_node(self, node, context):
return node.render(context)...
class TextNode(Node):
def __init__(self, s):
self.s = s
def __repr__(self):
Variable | Value |
---|---|
node | <Block Node: body. Contents: []> |
self | [<Text Node: '<!DOCTYPE html PUBLIC "-/'>, <Block Node: title. Contents: [<Variable Node: SITE_NAME|safe>]>, <Text Node: '</title> <link href="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/favicon.ico" type='>, <Variable Node: MEDIA_URL>, <Text Node: 'images/favicon.ico" type='>, <Variable Node: MEDIA_URL>, <Text Node: 'css/all.css" /> <link'>, <Variable Node: MEDIA_URL>, <Text Node: 'css/opacity.css" /> <'>, <Variable Node: MEDIA_URL>, <Text Node: 'css/my.css" /> <!--[if l'>, <Variable Node: MEDIA_URL>, <Text Node: 'css/ie.css" /><![endif]--'>, <Variable Node: MEDIA_URL>, <Text Node: 'css/jquery.fancybox-1.3.4'>, <Variable Node: MEDIA_URL>, <Text Node: ''; </script> <script'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/jquery-1.4.4.min.js"><'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/masonry.pkgd.min.js"><'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/cufon.js"></script> <'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/cufon-fonts.js"></scri'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/cufon-settings.js"></s'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/jquery.fancybox-1.3.4.'>, <Variable Node: MEDIA_URL>, <Text Node: 'js/my.js"></script> <scr'>, <Block Node: extrahead. Contents: []>, <Text Node: ' </head> <body class="'>, <Block Node: bodyclass. Contents: [<Text Node: 'green_page'>]>, <Text Node: '"> <!-- Yandex.Metrika c'>, <Block Node: body. Contents: []>, <Text Node: ' '>, <Block Node: hiddenobjects. Contents: [<Text Node: ' '>, <If node>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x37b8850>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: extrafoot. Contents: []>, <Text Node: ' <script type="text/java'>] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/loader_tags.py
in render
push = block = block_context.pop(self.name)
if block is None:
block = self
# Create new block so we can store context without thread-safety issues.
block = BlockNode(block.name, block.nodelist)
block.context = context
context['block'] = block
result = block.nodelist.render(context)...
if push is not None:
block_context.push(self.name, push)
context.pop()
return result
def super(self):
Variable | Value |
---|---|
push | <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x2fe7190> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
block | <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]> |
self | <Block Node: body. Contents: []> |
/home/busina/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):
bits.append(self.render_node(node, context))...
else:
bits.append(node)
return mark_safe(''.join([force_unicode(b) for b in bits]))
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
Variable | Value |
---|---|
node | <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]> |
self | [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>] |
bits | [u'\n ', u'\n<div id="header" style="background-image: url(/media/images/bg-header-02.jpg);">\n <div class="frame">\n <div id="lang-nav">\n <li class="active"><a href="/">Ru</a></li>\n <li><a href="/de/">De</a></li>\n <li><a href="/en/">En</a></li>\n </div>\n\n \n\n\n<ul id="nav">\n <li><a class="type1" href="#">\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435</a></li>\n \n <li ><a class="type2" href="/company/">\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f</a></li>\n \n <li ><a class="type3" href="/beadcraft/">Beadcraft</a></li>\n \n <li class="active"><a class="type4" href="/eshop/">\u041c\u0430\u0433\u0430\u0437\u0438\u043d</a></li>\n \n</ul>\n <ul class="top-menu">\n \n <li class="cart">\n\n \u0412\u0430\u0448\u0430 \u043a\u043e\u0440\u0437\u0438\u043d\u0430\n\n</li>\n <li><a class="login" href="/login/">\u0412\u043e\u0439\u0442\u0438</a></li>\n \n</ul>\n\n\n <strong class="logo"><a href="/">\u0411\u0443\u0441\u0438\u043d\u0430.ru</a></strong>\n <span class="slogan">C\u0430\u0439\u0442 \u0438 \u043c\u0430\u0433\u0430\u0437\u0438\u043d \u043e \u0431\u0438\u0441\u0435\u0440\u043e\u043f\u043b\u0435\u0442\u0435\u043d\u0438\u0438 \u0438 \u0432\u044b\u0448\u0438\u0432\u0430\u043d\u0438\u0438<br /> \u0431\u0438\u0441\u0435\u0440\u043e\u043c, \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 \xab\u041a\u0440\u043e\u0448\u0435\xbb.</span>\n \n <a class="join" href="/registration/">\u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c</a>\n \n\n <form class="search" action="/search/"><div style=\'display:none\'><input type=\'hidden\' name=\'csrfmiddlewaretoken\' value=\'282e35eac86b61e4414633d8f0af10fc\' /></div>\n <fieldset>\n <div class="input">\n <input type="image" class="button" src="/media/images/btn-search.gif" />\n <input type="text" class="text" name="q" />\n </div>\n <p><a href="/eshop/about/">\u041e \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435</a> <a href="/feedback/">\u041e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0432\u044f\u0437\u044c</a></p>\n </fieldset>\n </form>\n <!--<div class="header-contacts">\n \n </div>-->\n </div>\n</div>\n', u'\n\n\t<div id="main">\n\t\t<div class="main-t"></div>\n\t\t<div class="main-c">\n\t\t\t<div class="w1">\n\t\t\t\t<div class="w2">\n ', u'\n \n\n\n<ul class="main-menu">\n \n <li ><a href="/eshop/group/2/"><span>\u0412\u044b\u0448\u0438\u0432\u0430\u043d\u0438\u0435 \u0431\u0438\u0441\u0435\u0440\u043e\u043c</span><em></em></a></li>\n \n <li ><a href="/eshop/group/4/"><span>\u042e\u0432\u0435\u043b\u0438\u0440\u043d\u044b\u0439 \u0431\u0438\u0441\u0435\u0440</span><em></em></a></li>\n \n <li class="active"><a href="/eshop/group/1/"><span>\u0411\u0438\u0441\u0435\u0440\u043e\u043f\u043b\u0435\u0442\u0435\u043d\u0438\u0435</span><em></em></a></li>\n \n <li ><a href="/eshop/group/5/"><span>\u0421\u043e\u043f\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u043e\u0432\u0430\u0440\u044b</span><em></em></a></li>\n \n</ul>\n ', u'\n \n '] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/base.py
in render_node
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
return nodes
def render_node(self, node, context):
return node.render(context)...
class TextNode(Node):
def __init__(self, s):
self.s = s
def __repr__(self):
Variable | Value |
---|---|
node | <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]> |
self | [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/loader_tags.py
in render
push = block = block_context.pop(self.name)
if block is None:
block = self
# Create new block so we can store context without thread-safety issues.
block = BlockNode(block.name, block.nodelist)
block.context = context
context['block'] = block
result = block.nodelist.render(context)...
if push is not None:
block_context.push(self.name, push)
context.pop()
return result
def super(self):
Variable | Value |
---|---|
push | <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x2fe7190> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
block | <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]> |
self | <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]> |
/home/busina/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):
bits.append(self.render_node(node, context))...
else:
bits.append(node)
return mark_safe(''.join([force_unicode(b) for b in bits]))
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
Variable | Value |
---|---|
node | <Block Node: content. Contents: []> |
self | [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>] |
bits | [u'\n <div ', '', u'>\n\t\t\t\t\t<div id="content" class="', u'embroidery-block', u'">\n\t\t\t\t\t\t<div class="content-t">', u'<img src="/media/images/bg-main06-t.png" width="1066" height="175" alt="image description" />', u'</div>\n\t\t\t\t\t\t<div class="content-c">\n\t\t\t\t\t\t\t<div class="content-holder">\n '] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/base.py
in render_node
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
return nodes
def render_node(self, node, context):
return node.render(context)...
class TextNode(Node):
def __init__(self, s):
self.s = s
def __repr__(self):
Variable | Value |
---|---|
node | <Block Node: content. Contents: []> |
self | [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/loader_tags.py
in render
push = block = block_context.pop(self.name)
if block is None:
block = self
# Create new block so we can store context without thread-safety issues.
block = BlockNode(block.name, block.nodelist)
block.context = context
context['block'] = block
result = block.nodelist.render(context)...
if push is not None:
block_context.push(self.name, push)
context.pop()
return result
def super(self):
Variable | Value |
---|---|
push | <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x2fe7190> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
block | <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]> |
self | <Block Node: content. Contents: []> |
/home/busina/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):
bits.append(self.render_node(node, context))...
else:
bits.append(node)
return mark_safe(''.join([force_unicode(b) for b in bits]))
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
Variable | Value |
---|---|
node | <Variable Node: object|get_default_dealer_price_int> |
self | [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>] |
bits | [u'\n <script type="text/javascript">\n window.dataLayer.push({\n "ecommerce": {\n "currencyCode": "RUB",\n "detail" : {\n "products" : [\n {\n "id": "', u'223', u'",\n "name": "', u'\u0411\u0440\u0430\u0441\u043b\u0435\u0442 \u041b\u0430\u043c\u0431\u0430\u0434\u0430', u'",\n "category": "', u'\u041d\u0430\u0431\u043e\u0440 \u0434\u043b\u044f \u0431\u0438\u0441\u0435\u0440\u043e\u043f\u043b\u0435\u0442\u0435\u043d\u0438\u044f', u'",\n "price": '] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/base.py
in render_node
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
return nodes
def render_node(self, node, context):
return node.render(context)...
class TextNode(Node):
def __init__(self, s):
self.s = s
def __repr__(self):
Variable | Value |
---|---|
node | <Variable Node: object|get_default_dealer_price_int> |
self | [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>] |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/base.py
in render
self.filter_expression = filter_expression
def __repr__(self):
return "<Variable Node: %s>" % self.filter_expression
def render(self, context):
try:
output = self.filter_expression.resolve(context)...
except UnicodeDecodeError:
# Unicode conversion can fail sometimes for reasons out of our
# control (e.g. exception rendering). In that case, we fail quietly.
return ''
return _render_value_in_context(output, context)
Variable | Value |
---|---|
self | <Variable Node: object|get_default_dealer_price_int> |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/local/lib/python2.7/site-packages/django/template/base.py
in resolve
if not lookup:
arg_vals.append(mark_safe(arg))
else:
arg_vals.append(arg.resolve(context))
if getattr(func, 'needs_autoescape', False):
new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
else:
new_obj = func(obj, *arg_vals)...
if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
obj = mark_safe(new_obj)
elif isinstance(obj, EscapeData):
obj = mark_for_escaping(new_obj)
else:
obj = new_obj
Variable | Value |
---|---|
obj | <Product: Браслет Ламбада> |
func | <function get_default_dealer_price_int at 0x2c9ca28> |
arg_vals | [] |
self | <django.template.base.FilterExpression object at 0x3342b90> |
args | [] |
ignore_failures | False |
context | [{'object': <Product: Браслет Ламбада>}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x3330710>}, {'perms': <django.utils.functional.__proxy__ object at 0x2fe7a90>, 'messages': <django.utils.functional.__proxy__ object at 0x3925d50>, 'user': <django.utils.functional.SimpleLazyObject object at 0x3330b90>}, {'MEDIA_URL': '/media/'}, {'LANGUAGES': (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'ru'}, {'request': <WSGIRequest GET:<QueryDict: {}>, POST:<QueryDict: {}>, COOKIES:{}, META:{'CSRF_COOKIE': '282e35eac86b61e4414633d8f0af10fc', 'CSRF_COOKIE_USED': True, 'HTTP_ACCEPT': '*/*', 'HTTP_CONNECTION': 'close', 'HTTP_HOST': 'busina.ru', 'HTTP_REFERER': 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/', 'HTTP_USER_AGENT': 'claudebot', 'HTTP_X_FORWARDED_FOR': '54.162.124.193', 'PATH_INFO': u'/eshop/product/223/', 'QUERY_STRING': '', 'RAW_URI': '/eshop/product/223/', 'REMOTE_ADDR': '54.162.124.193', 'REMOTE_PORT': '80', 'REQUEST_METHOD': 'GET', 'SCRIPT_NAME': u'', 'SERVER_NAME': 'busina.ru', 'SERVER_PORT': '80', 'SERVER_PROTOCOL': 'HTTP/1.0', 'SERVER_SOFTWARE': 'gunicorn/0.17.4', 'gunicorn.socket': <socket._socketobject object at 0x367a2f0>, 'wsgi.errors': <open file '<stderr>', mode 'w' at 0x7f22df7b7270>, 'wsgi.file_wrapper': <class gunicorn.http.wsgi.FileWrapper at 0x1074ce8>, 'wsgi.input': <gunicorn.http.body.Body object at 0x3431590>, 'wsgi.multiprocess': False, 'wsgi.multithread': False, 'wsgi.run_once': False, 'wsgi.url_scheme': 'http', 'wsgi.version': (1, 0)}>}, {'YANDEX_KEY': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'SITE_NAME': u'\u0411\u0443\u0441\u0438\u043d\u0430'}, {'current_node': <StructureNode: Магазин>, 'current_root_node': <StructureNode: Магазин>, 'current_top_node': <StructureNode: Магазин>}, {'flavour': u'full'}, {'user': <django.contrib.auth.models.AnonymousUser object at 0x351f990>}, {}, {'current_category': <Category: Браслеты из бисера>, 'product_list': [], 'current_group': <Group: Бисероплетение>, 'current_dealer': None}, {'block': <Block Node: body. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x3354790>, <Text Node: ' <div id="main"> <div'>, <Block Node: menu-over. Contents: [<Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x36d2e50>, <Text Node: ' '>]>, <Text Node: ' '>, <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>, <Text Node: ' </div> </div> <'>, <Block Node: lowerblok. Contents: []>, <Text Node: ' '>, <django.template.loader_tags.ConstantIncludeNode object at 0x2fce9d0>, <Text Node: ' '>]>}, {}, {'block': <Block Node: content-over. Contents: [<Text Node: ' <div'>, <Block Node: contentoverclass. Contents: []>, <Text Node: '> <div id="content" '>, <Block Node: contentclass. Contents: []>, <Text Node: '"> <div class="cont'>, <Block Node: topcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main06-t.png" w'>]>, <Text Node: '</div> <div class="'>, <Block Node: content. Contents: []>, <Text Node: ' </div> </di'>, <Block Node: bottomcap. Contents: [<Text Node: '<img src="'>, <Variable Node: MEDIA_URL>, <Text Node: 'images/bg-main02-b.png" w'>]>, <Text Node: '</div> </div> '>, <Block Node: aside. Contents: []>, <Text Node: ' </di'>]>}, {'block': <Block Node: content. Contents: [<Text Node: ' <script type="text/j'>, <Variable Node: object.id>, <Text Node: '", "nam'>, <Variable Node: object|safe>, <Text Node: '", "cat'>, <Variable Node: current_category.title_single>, <Text Node: '", "pri'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <Variable Node: object.id>, <Text Node: '", "n'>, <Variable Node: object|safe>, <Text Node: '", "c'>, <Variable Node: current_category.title_single>, <Text Node: '", "p'>, <Variable Node: object|get_default_dealer_price_int>, <Text Node: ' } '>, <If node>, <Text Node: ' <h1>'>, <Variable Node: current_category.title_single>, <Text Node: ' ?'>, <Variable Node: object|safe>, <Text Node: '?</h1> </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' </div> '>, <If node>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <Variable Node: object.description|default:""|markdown>, <Text Node: ' '>, <If node>, <Text Node: ' </di'>, <If node>, <Text Node: ' <script> $(function('>]>}] |
/home/busina/busina/eshop/templatetags/eshop_tags.py
in get_default_dealer_price_int
result = DealerState.objects.filter(product=product, dealer__id=dealer.id)[:1].get().cost
except DealerState.DoesNotExist:
result = product.price
return result
@register.filter
def get_default_dealer_price_int(product):
dealer = Dealer.objects.get(is_main_dealer=True)...
try:
result = DealerState.objects.filter(product=product, dealer__id=dealer.id)[:1].get().cost
except DealerState.DoesNotExist:
result = product.price
if result:
return int(result)
Variable | Value |
---|---|
product | <Product: Браслет Ламбада> |
/home/busina/local/lib/python2.7/site-packages/django/db/models/manager.py
in get
def distinct(self, *args, **kwargs):
return self.get_query_set().distinct(*args, **kwargs)
def extra(self, *args, **kwargs):
return self.get_query_set().extra(*args, **kwargs)
def get(self, *args, **kwargs):
return self.get_query_set().get(*args, **kwargs)...
def get_or_create(self, **kwargs):
return self.get_query_set().get_or_create(**kwargs)
def create(self, **kwargs):
return self.get_query_set().create(**kwargs)
Variable | Value |
---|---|
self | <busina.dealers.models.DealerManager object at 0x1be3210> |
args | () |
kwargs | {'is_main_dealer': True} |
/home/busina/local/lib/python2.7/site-packages/django/db/models/query.py
in get
if self.query.can_filter():
clone = clone.order_by()
num = len(clone)
if num == 1:
return clone._result_cache[0]
if not num:
raise self.model.DoesNotExist("%s matching query does not exist."
% self.model._meta.object_name)...
raise self.model.MultipleObjectsReturned("get() returned more than one %s -- it returned %s! Lookup parameters were %s"
% (self.model._meta.object_name, num, kwargs))
def create(self, **kwargs):
"""
Creates a new object with the given kwargs, saving it to the database
Variable | Value |
---|---|
clone | [] |
num | 0 |
self | [<Dealer: rosto-ltd>, <Dealer: oformitel>, <Dealer: shveynimir>, <Dealer: tvoehobbi>, <Dealer: rusmanufaktura>, <Dealer: vivat>, <Dealer: rukodelkino>, <Dealer: marevna>, <Dealer: msk>, <Dealer: magik>, <Dealer: lanail>, <Dealer: raksina>, <Dealer: sewworld>, <Dealer: baks>, <Dealer: saltanova>, <Dealer: a_mazalov>, <Dealer: afinaspb>, <Dealer: vekom>, <Dealer: pugovka>, <Dealer: ipmelnik>, '...(remaining elements truncated)...'] |
args | () |
kwargs | {'is_main_dealer': True} |
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
HTTP_REFERER | 'http://busina.ru/eshop/product/223/add/?next=/eshop/product/223/' |
SERVER_PROTOCOL | 'HTTP/1.0' |
SERVER_SOFTWARE | 'gunicorn/0.17.4' |
SCRIPT_NAME | u'' |
wsgi.input | <gunicorn.http.body.Body object at 0x3431590> |
REQUEST_METHOD | 'GET' |
HTTP_HOST | 'busina.ru' |
PATH_INFO | u'/eshop/product/223/' |
wsgi.multithread | False |
QUERY_STRING | '' |
HTTP_CONNECTION | 'close' |
HTTP_ACCEPT | '*/*' |
HTTP_USER_AGENT | 'claudebot' |
wsgi.version | (1, 0) |
REMOTE_PORT | '80' |
RAW_URI | '/eshop/product/223/' |
REMOTE_ADDR | '54.162.124.193' |
wsgi.run_once | False |
wsgi.errors | <open file '<stderr>', mode 'w' at 0x7f22df7b7270> |
wsgi.multiprocess | False |
wsgi.url_scheme | 'http' |
gunicorn.socket | <socket._socketobject object at 0x367a2f0> |
SERVER_NAME | 'busina.ru' |
SERVER_PORT | '80' |
HTTP_X_FORWARDED_FOR | '54.162.124.193' |
wsgi.file_wrapper | '' |
CSRF_COOKIE | '282e35eac86b61e4414633d8f0af10fc' |
CSRF_COOKIE_USED | True |
busina.settings
Setting | Value |
---|---|
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
LANGUAGE_CODE | 'ru' |
ROOT_URLCONF | 'busina.urls' |
MANAGERS | (('Support', 'support@plan-b.ru'), (u'\u0411\u0443\u0441\u0438\u043d\u0430.\u0440\u0443', 'admin@busina.ru')) |
TEMPLATE_LOADERS | ('django_mobile.loader.Loader', 'django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader') |
DEFAULT_CHARSET | 'utf-8' |
STATIC_ROOT | '' |
TEST_DATABASE_CHARSET | None |
MESSAGE_STORAGE | 'django.contrib.messages.storage.user_messages.LegacyFallbackStorage' |
DATABASE_HOST | '' |
IGNORABLE_404_STARTS | ('/cgi-bin/', '/_vti_bin', '/_vti_inf') |
SEND_BROKEN_LINK_EMAILS | False |
URL_VALIDATOR_USER_AGENT | 'Django/1.3.1 (http://www.djangoproject.com)' |
STATICFILES_FINDERS | ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder') |
ODNOKLASSNIKI_OAUTH2_APP_KEY | 'CBAOAOICEBABABABA' |
SESSION_COOKIE_DOMAIN | None |
SESSION_COOKIE_NAME | 'sessionid' |
COMMENTS_MODERATORS_GROUP | None |
TIME_INPUT_FORMATS | ('%H:%M:%S', '%H:%M') |
DATABASES | {'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'HOST': '206.189.4.36', 'NAME': 'busina', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST_CHARSET': None, 'TEST_COLLATION': None, 'TEST_MIRROR': None, 'TEST_NAME': None, 'TIME_ZONE': 'Europe/Moscow', 'USER': ''}} |
TEMPLATE_DEBUG | False |
FILE_UPLOAD_PERMISSIONS | None |
FILE_UPLOAD_HANDLERS | ('planb.core.upload_handlers.MemoryFileUploadHandler', 'planb.core.upload_handlers.TemporaryFileUploadHandler') |
DEFAULT_CONTENT_TYPE | 'text/html' |
APPEND_SLASH | True |
FIRST_DAY_OF_WEEK | 0 |
DATABASE_ROUTERS | [] |
HR_MANAGERS | ['support@plan-b.ru', '7065161@gmail.com'] |
YEAR_MONTH_FORMAT | 'F Y' |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
CACHES | {'default': {'BACKEND': 'johnny.backends.memcached.MemcachedCache', 'JOHNNY_CACHE': True, 'LOCATION': ['localhost:11211']}} |
TEMPLATE_DIRS | ('/home/busina/templates',) |
SERVER_EMAIL | 'mail@busina.ru' |
SESSION_COOKIE_PATH | '/' |
YANDEX_KASSA_SHOP_PASSWORD | '********************' |
IGNORABLE_404_ENDS | ('mail.pl', 'mailform.pl', 'mail.cgi', 'mailform.cgi', 'favicon.ico', '.php') |
MIDDLEWARE_CLASSES | ('johnny.middleware.LocalStoreClearMiddleware', 'johnny.middleware.QueryCacheMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'babeldjango.middleware.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'planb.core.middleware.CurrentNodeMiddleware', 'planb.core.middleware.RequestSiteMiddleware', 'planb.core.middleware.SubdomainMiddleware', 'planb.core.middleware.UpdateRatingMiddleware', 'planb.core.middleware.OnlineUserMiddleware', 'django.contrib.redirects.middleware.RedirectFallbackMiddleware', 'django_mobile.middleware.MobileDetectionMiddleware', 'django_mobile.middleware.SetFlavourMiddleware') |
USE_I18N | True |
THOUSAND_SEPARATOR | ',' |
SECRET_KEY | '********************' |
LANGUAGE_COOKIE_NAME | 'django_language' |
FILE_UPLOAD_TEMP_DIR | None |
TRANSACTIONS_MANAGED | False |
LOGGING_CONFIG | 'django.utils.log.dictConfig' |
LOCAL_MEDIA_ROOT | '/home/busina/media' |
YANDEX_KASSA_SCID | '90710' |
SOCIAL_AUTH_USER_MODEL | 'registration.Profiled' |
AUTHENTICATION_BACKENDS | ('social_auth.backends.contrib.vk.VKOAuth2Backend', 'social_auth.backends.facebook.FacebookBackend', 'social_auth.backends.contrib.odnoklassniki.OdnoklassnikiBackend', 'django.contrib.auth.backends.ModelBackend') |
TEST_DATABASE_COLLATION | None |
FORCE_SCRIPT_NAME | None |
USE_X_FORWARDED_HOST | False |
DECIMAL_SEPARATOR | '.' |
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 | ['johnny', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.admin', 'django.contrib.markup', 'mptt', 'south', 'djapian', 'planb.core', 'planb.registration', 'planb.news', 'planb.feedback', 'django_mobile', 'django.contrib.redirects', 'busina.qa', 'busina.promo', 'busina.city', 'busina.distributors', 'busina.dealers', 'busina.shops', 'busina.eshop', 'busina.workpiece', 'busina.historical', 'busina.resources', 'busina.lessons', 'busina.uploads', 'busina.log', 'busina.search', 'busina.messages', 'busina.contest', 'busina.imagecontest', 'social_auth', 'raven.contrib.django'] |
ODNOKLASSNIKI_OAUTH2_CLIENT_KEY | '1099762944' |
LANGUAGES_BIDI | ('he', 'ar', 'fa') |
DATABASE_ENGINE | '' |
DATABASE_NAME | '' |
COMMENTS_FIRST_FEW | 0 |
PREPEND_WWW | False |
THUMBNAIL_URL | '/media/tmp/' |
SESSION_COOKIE_HTTPONLY | False |
DATABASE_PORT | '' |
FACEBOOK_APP_ID | '304742666389369' |
DEBUG_PROPAGATE_EXCEPTIONS | False |
MONTH_DAY_FORMAT | 'F j' |
LOGIN_URL | '/login/' |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
RAVEN_CONFIG | {'dsn': 'udp://c12ce707d4d74073b93762c36aef47a6:ab40a34f787b4846847805ea17ac5929@sentry.l00m.net:9001/6'} |
TIME_FORMAT | 'H:i' |
PROFANITIES_LIST | '********************' |
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 | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
CACHE_MIDDLEWARE_ALIAS | 'default' |
SESSION_SAVE_EVERY_REQUEST | False |
ADMIN_MEDIA_PREFIX | '/media/admin/' |
NUMBER_GROUPING | 0 |
SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
COMMENTS_SKETCHY_USERS_GROUP | None |
LOGIN_REDIRECT_URL | '/registration/profile/' |
SOCIAL_AUTH_PIPELINE | ('social_auth.backends.pipeline.social.social_auth_user', 'social_auth.backends.pipeline.user.get_username', 'social_auth.backends.pipeline.user.create_user', 'social_auth.backends.pipeline.social.associate_user', 'social_auth.backends.pipeline.social.load_extra_data', 'planb.registration.views.update_user_details') |
LOGGING | {'disable_existing_loggers': False, 'handlers': {'mail_admins': {'class': 'django.utils.log.AdminEmailHandler', 'level': 'ERROR'}}, 'loggers': {'django.request': {'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True}}, 'version': 1} |
CACHE_MIDDLEWARE_KEY_PREFIX | '' |
LOCALE_PATHS | ('/home/busina/locale',) |
TEMPLATE_STRING_IF_INVALID | '' |
LOCAL_MEDIA_URL | '/media/' |
DJAPIAN_DATABASE_PATH | '/home/busina/djapian' |
COMMENTS_ALLOW_PROFANITIES | False |
LOGOUT_URL | '/accounts/logout/' |
EMAIL_USE_TLS | True |
ODNOKLASSNIKI_OAUTH2_CLIENT_SECRET | '********************' |
VK_API_SECRET | '********************' |
FIXTURE_DIRS | ('/home/busina/fixtures',) |
EMAIL_HOST | 'smtp.gmail.com' |
DATE_FORMAT | 'd F Y' |
FACEBOOK_API_SECRET | '********************' |
YANDEX_API_KEY | {'127.0.0.1:8000': 'AJg_lksBAAAAH55vUAQAyeNUnAG-p52_VMiL0RBS5h6UGUgAAAAAAAAAAACE8dFV0rOKAM6Rnmun8SEXw16D3g==', 'bead.ru': 'AAUrMU4BAAAA2-gPPwIAmfcxsZ0YJiY2Sbl8KBHaGpBv0yEAAAAAAAAAAACqxtYlBA1iQOTje3q3QUC23EsVyw==', 'busina.ru': 'AISzgU4BAAAAf8GGVgIA_SXnueC8U3amau50GEH3HuyKGSYAAAAAAAAAAACygov1gALr5CcjMkLhwbhOyUesFg==', 'plan-b.ru': 'AKWzgU4BAAAAtTVyAAIAe76NhgWyFcnqvPs8BDoGboGcgXMAAAAAAAAAAABNdNbRRE9yZQPgAZHzKjgMsAfp-w=='} |
MEDIA_ROOT | '/home/busina/media' |
DJAPIAN_STEMMING_LANG | 'ru' |
LOCAL_MIDDLEWARE_CLASSES | () |
ADMINS | (('Admin', 'bugs@plan-b.ru'),) |
FORMAT_MODULE_PATH | None |
DEFAULT_FROM_EMAIL | 'mail@busina.ru' |
STATICFILES_DIRS | () |
MEDIA_URL | '/media/' |
DATETIME_FORMAT | 'N j, Y, P' |
EMAIL_SUBJECT_PREFIX | u'[Busina.ru] ' |
SITE_ID | 1 |
DISALLOWED_USER_AGENTS | () |
ALLOWED_INCLUDE_ROOTS | () |
YANDEX_KASSA_SHOP_ID | '95741' |
LOCAL_INSTALLED_APPS | ('raven.contrib.django',) |
SHORT_DATE_FORMAT | 'm/d/Y' |
DATABASE_USER | '' |
TEST_DATABASE_NAME | None |
TEST_RUNNER | 'django.test.simple.DjangoTestSuiteRunner' |
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.media', 'django.core.context_processors.i18n', 'django.core.context_processors.request', 'planb.core.context_processors.site_name', 'planb.core.context_processors.current_node', 'django_mobile.context_processors.flavour', 'busina.dealers.context_processors.real_user', 'busina.eshop.context_processors.user_cart', 'busina.eshop.context_processors.news') |
SITE_NAME | u'\u0411\u0443\u0441\u0438\u043d\u0430' |
SESSION_COOKIE_AGE | 1209600 |
SETTINGS_MODULE | 'busina.settings' |
USE_ETAGS | False |
SITE_ROOT | '/home/busina' |
LANGUAGES | (('ru', u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439'),) |
ADMIN_MEDIA_URL | '/admin/media/' |
DEFAULT_INDEX_TABLESPACE | '' |
INTERNAL_IPS | () |
STATIC_URL | '/media/' |
VK_APP_ID | '4443318' |
EMAIL_PORT | 587 |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
JOHNNY_MIDDLEWARE_KEY_PREFIX | 'jc_busina' |
ABSOLUTE_URL_OVERRIDES | {} |
DATABASE_OPTIONS | {} |
BASE_DOMAIN | 'busina.ru' |
CACHE_MIDDLEWARE_SECONDS | 600 |
BANNED_IPS | () |
THUMBNAIL_DIR | '/home/busina/media/tmp' |
DATETIME_INPUT_FORMATS | ('%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M', '%m/%d/%y') |
DATABASE_PASSWORD | '********************' |
ADMIN_FOR | () |
ADMIN_MEDIA_ROOT | '/usr/local/django/contrib/admin/media/' |
EMAIL_HOST_USER | 'busina@plan-b.ru' |
COMMENTS_BANNED_USERS_GROUP | None |
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.