Invalid block tag on line 186: 'endblock'. Did you forget to register or load this tag?
Request Method: | GET |
---|---|
Request URL: | https://learn.spotandtango.com/portuguese-podengo/high-protein/dog-food/ |
Django Version: | 3.2.25 |
Exception Type: | TemplateSyntaxError |
Exception Value: | Invalid block tag on line 186: 'endblock'. Did you forget to register or load this tag? |
Exception Location: | /app/.heroku/python/lib/python3.8/site-packages/django/template/base.py, line 531, in invalid_block_tag |
Python Executable: | /app/.heroku/python/bin/python3 |
Python Version: | 3.8.18 |
Python Path: | ['/app/server', '/app/.heroku/python/bin', '/app', '/app/.heroku/python/lib/python38.zip', '/app/.heroku/python/lib/python3.8', '/app/.heroku/python/lib/python3.8/lib-dynload', '/app/.heroku/python/lib/python3.8/site-packages'] |
Server time: | Thu, 28 Mar 2024 16:15:47 +0000 |
In template /app/server/spotandtango/core/templates/core/issue_article_detail.html
, error at line 186
176 | href="https://shop.spotandtango.com?utm_source=learn&utm_medium=seo&utm_campaign=breedpage" |
---|---|
177 | >Get Your {{ article.breed_name }} the Right Food</a |
178 | > |
179 | </div> |
180 | <div class="breed-content-block"> |
181 | <h3>{{ article.paragraph_5_section_heading }}</h3> |
182 | <p>{{ article.paragraph_5 }}</p> |
183 | </div> |
184 | </section> |
185 | </article> |
186 | {% endblock %} |
187 |
/app/.heroku/python/lib/python3.8/site-packages/django/template/base.py
, line 470, in parse
# Add the token to the command stack. This is used for error
# messages if further parsing fails due to an unclosed block
# tag.
self.command_stack.append((command, token))
# Get the tag callback function from the ones registered with
# the parser.
try:
compile_func = self.tags[command]…
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
Variable | Value |
---|---|
command | 'endblock' |
compile_func | <function do_static at 0x7f298d6a0af0> |
compiled_result | <django.templatetags.static.StaticNode object at 0x7f298ba95ee0> |
filter_expression | <django.template.base.FilterExpression object at 0x7f298ba9f790> |
nodelist | [<TextNode: ' '>, <django.template.defaulttags.LoadNode object at 0x7f298ba90610>, <TextNode: ' '>, <Block Node: title. Contents: [<TextNode: ' {{\narticle.title }} - Sp'>]>, <TextNode: ' '>, <Block Node: canonicallink. Contents: [<TextNode: '\n<link rel="canonical" hr'>, <Variable Node: canonical_path>, <TextNode: '" />\n'>]>, <TextNode: '\n\n<!-- Meta tags for SEO '>, <Block Node: og_and_extra_meta_tags. Contents: [<TextNode: '\n<script type="applicatio'>, <Variable Node: article.breed_name>, <TextNode: ' Dog Food",\n "item'>, <Variable Node: article.slug>, <TextNode: '/dog-food/"\n },\n '>, <Variable Node: article.issue_name>, <TextNode: ' '>, <Variable Node: article.breed_name>, <TextNode: ' Dog Food",\n "item'>, <Variable Node: article.slug>, <TextNode: '/'>, <Variable Node: article.issue_name_slug>, <TextNode: '/dog-food/"\n }\n ]'>, <Variable Node: article.issue_name>, <TextNode: ' '>, <Variable Node: article.breed_name>, <TextNode: ' Dog Food - Spot and Tang'>, <Variable Node: article.breed_name>, <TextNode: '..."\n/>\n<meta\n property='>, <Variable Node: article.slug>, <TextNode: '/'>, <Variable Node: article.issue_name_slug>, <TextNode: '/dog-food/"\n/>\n<meta prop'>, <Variable Node: article.featured_image.url>, <TextNode: '" />\n<meta\n property="og'>, <Variable Node: article.featured_image.url>, <TextNode: '"\n/>\n<meta name="twitter:'>, <Variable Node: article.breed_name>, <TextNode: '..."\n/>\n<meta\n name="twi'>, <Variable Node: article.breed_name>, <TextNode: ' Dog Food from @SpotandTa'>, <Variable Node: article.featured_image.url>, <TextNode: '" />\n<meta name="twitter:'>]>, <TextNode: '\n<!-- END block og_and_ex'>, <Block Node: navbar. Contents: [<TextNode: ' '>, <django.template.loader_tags.IncludeNode object at 0x7f298ba92850>, <TextNode: ' '>]>, <TextNode: ' {%\nblock content %}\n<art'>, <Variable Node: article.breed_name>, <TextNode: '</h3>\n </div>\n <div'>, <Variable Node: article.akc_grouping>, <TextNode: '</span>\n </div>\n <d'>, <Variable Node: article.temperament_1>, <TextNode: '</li>\n <li>'>, <Variable Node: article.temperament_2>, <TextNode: '</li>\n <li>'>, <Variable Node: article.temperament_3>, <TextNode: '</li>\n </ul>\n </d'>, <Variable Node: article.demeanor>, <TextNode: '</span>\n </div>\n </se'>, <Variable Node: article.paragraph_1_section_heading>, <TextNode: '</h3>\n <img\n '>, <Variable Node: article.breed_name>, <TextNode: '"\n src="'>, <Variable Node: article.featured_image.url>, <TextNode: '"\n />\n <p>'>, <Variable Node: article.paragraph_1>, <TextNode: '</p>\n <div class="sn'>, <Variable Node: article.paragraph_2_section_heading>, <TextNode: '</h3>\n <p>'>, <Variable Node: article.paragraph_2>, <TextNode: '</p>\n <a\n cla'>, <Variable Node: article.breed_name>, <TextNode: ' the Right Food</a\n '>, <django.templatetags.static.StaticNode object at 0x7f298ba95130>, <TextNode: '" />\n <div>\n '>, <Variable Node: article.energy>, <TextNode: '</span>\n </div>\n'>, <django.templatetags.static.StaticNode object at 0x7f298ba951f0>, <TextNode: '" />\n <div>\n '>, <Variable Node: article.grooming>, <TextNode: '</span>\n </div>\n'>, <django.templatetags.static.StaticNode object at 0x7f298ba955e0>, <TextNode: '" />\n <div>\n '>, <Variable Node: article.training>, <TextNode: '</span>\n </div>\n'>, <django.templatetags.static.StaticNode object at 0x7f298ba959d0>, <TextNode: '" />\n <div>\n '>, <Variable Node: article.shedding>, <TextNode: '</span>\n </div>\n'>, <Variable Node: article.paragraph_3_section_heading>, <TextNode: '</h3>\n <p>'>, <Variable Node: article.paragraph_3>, <TextNode: '</p>\n <div>\n '>, <Variable Node: article.breed_name>, <TextNode: '"\n src="'>, <django.templatetags.static.StaticNode object at 0x7f298ba95ee0>, <TextNode: '"\n />\n </div>'>, <Variable Node: artic… <trimmed 4496 bytes string> |
parse_until | [] |
self | <django.template.base.Parser object at 0x7f298ba90640> |
token | <django.template.base.Token object at 0x7f298ba90490> |
var_node | <Variable Node: article.paragraph_5> |
/app/.heroku/python/lib/python3.8/site-packages/django/core/handlers/exception.py
, line 47, in inner
response = await sync_to_async(response_for_exception, thread_sensitive=False)(request, exc)
return response
return inner
else:
@wraps(get_response)
def inner(request):
try:
response = get_response(request)…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | TemplateSyntaxError("Invalid block tag on line 186: 'endblock'. Did you forget to register or load this tag?") |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f298bf66d90>> |
request | <WSGIRequest: GET '/portuguese-podengo/high-protein/dog-food/'> |
/app/.heroku/python/lib/python3.8/site-packages/django/core/handlers/base.py
, line 181, in _get_response
if response is None:
wrapped_callback = self.make_view_atomic(callback)
# If it is an asynchronous view, run it in a subthread.
if asyncio.iscoroutinefunction(wrapped_callback):
wrapped_callback = async_to_sync(wrapped_callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs)…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
if response is None:
raise
# Complain if the view returned None (a common error).
Variable | Value |
---|---|
callback | <function issue_article_detail at 0x7f298bc2fa60> |
callback_args | () |
callback_kwargs | {'breed_name': 'portuguese-podengo', 'issue_name': 'high-protein'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f298bcc80d0>> |
request | <WSGIRequest: GET '/portuguese-podengo/high-protein/dog-food/'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f298bf66d90> |
wrapped_callback | <function issue_article_detail at 0x7f298bc2fa60> |
/app/server/spotandtango/core/views.py
, line 119, in issue_article_detail
slug=breed_slug).filter(is_high_protein=True).first()
if issue_name == 'overweight':
article = IssueArticle.objects.filter(
slug=breed_slug).filter(is_overweight=True).first()
if issue_name == 'sensitive-stomach':
article = IssueArticle.objects.filter(
slug=breed_slug).filter(is_sensitive_stomach=True).first()
template = loader.get_template('core/issue_article_detail.html')…
context = {
'canonical_path': request.build_absolute_uri(request.path),
'article': article,
'breed_article': 1,
}
return HttpResponse(template.render(context, request))
Variable | Value |
---|---|
article | <IssueArticle: Best Portuguese Podengo High Protein Dog Food> |
breed_article | None |
breed_name | 'portuguese-podengo' |
breed_slug | 'portuguese-podengo' |
issue_name | 'high-protein' |
request | <WSGIRequest: GET '/portuguese-podengo/high-protein/dog-food/'> |
/app/.heroku/python/lib/python3.8/site-packages/django/template/loader.py
, line 15, in get_template
Raise TemplateDoesNotExist if no such template exists.
"""
chain = []
engines = _engine_list(using)
for engine in engines:
try:
return engine.get_template(template_name)…
except TemplateDoesNotExist as e:
chain.append(e)
raise TemplateDoesNotExist(template_name, chain=chain)
Variable | Value |
---|---|
chain | [] |
engine | <django.template.backends.django.DjangoTemplates object at 0x7f298bc0c970> |
engines | [<django.template.backends.django.DjangoTemplates object at 0x7f298bc0c970>] |
template_name | 'core/issue_article_detail.html' |
using | None |
/app/.heroku/python/lib/python3.8/site-packages/django/template/backends/django.py
, line 34, in get_template
self.engine = Engine(self.dirs, self.app_dirs, **options)
def from_string(self, template_code):
return Template(self.engine.from_string(template_code), self)
def get_template(self, template_name):
try:
return Template(self.engine.get_template(template_name), self)…
except TemplateDoesNotExist as exc:
reraise(exc, self)
def get_templatetag_libraries(self, custom_libraries):
"""
Return a collation of template tag libraries from installed
Variable | Value |
---|---|
self | <django.template.backends.django.DjangoTemplates object at 0x7f298bc0c970> |
template_name | 'core/issue_article_detail.html' |
/app/.heroku/python/lib/python3.8/site-packages/django/template/engine.py
, line 143, in get_template
return Template(template_code, engine=self)
def get_template(self, template_name):
"""
Return a compiled Template object for the given template name,
handling template inheritance recursively.
"""
template, origin = self.find_template(template_name)…
if not hasattr(template, 'render'):
# template needs to be compiled
template = Template(template, origin, template_name, engine=self)
return template
def render_to_string(self, template_name, context=None):
Variable | Value |
---|---|
self | <django.template.engine.Engine object at 0x7f298bc2d370> |
template_name | 'core/issue_article_detail.html' |
/app/.heroku/python/lib/python3.8/site-packages/django/template/engine.py
, line 125, in find_template
raise ImproperlyConfigured(
"Invalid value in template loaders configuration: %r" % loader)
def find_template(self, name, dirs=None, skip=None):
tried = []
for loader in self.template_loaders:
try:
template = loader.get_template(name, skip=skip)…
return template, template.origin
except TemplateDoesNotExist as e:
tried.extend(e.tried)
raise TemplateDoesNotExist(name, tried=tried)
def from_string(self, template_code):
Variable | Value |
---|---|
dirs | None |
loader | <django.template.loaders.app_directories.Loader object at 0x7f298bbebf40> |
name | 'core/issue_article_detail.html' |
self | <django.template.engine.Engine object at 0x7f298bc2d370> |
skip | None |
tried | [(<django.template.base.Origin object at 0x7f298bb37f70>, 'Source does not exist')] |
/app/.heroku/python/lib/python3.8/site-packages/django/template/loaders/base.py
, line 29, in get_template
try:
contents = self.get_contents(origin)
except TemplateDoesNotExist:
tried.append((origin, 'Source does not exist'))
continue
else:
return Template(…
contents, origin, origin.template_name, self.engine,
)
raise TemplateDoesNotExist(template_name, tried=tried)
def get_template_sources(self, template_name):
Variable | Value |
---|---|
contents | ("{% extends 'core/base.html' %} {% load static %} {% block title %} {{\n" 'article.title }} - Spot and Tango {% endblock %} {% block canonicallink %}\n' '<link rel="canonical" href="{{canonical_path}}" />\n' '{% endblock %}\n' '\n' '<!-- Meta tags for SEO and OpenGraph (personalize how shareable link looks ' 'like on social media) -->\n' '{% block og_and_extra_meta_tags %}\n' '<script type="application/ld+json">\n' ' {\n' ' "@context": "https://schema.org/",\n' ' "@type": "BreadcrumbList",\n' ' "itemListElement": [\n' ' {\n' ' "@type": "ListItem",\n' ' "position": 1,\n' ' "name": "Best {{article.breed_name}} Dog Food",\n' ' "item": "https://learn.spotandtango.com/{{article.slug}}/dog-food/"\n' ' },\n' ' {\n' ' "@type": "ListItem",\n' ' "position": 2,\n' ' "name": "{{article.issue_name}} {{article.breed_name}} Dog Food",\n' ' "item": ' '"https://learn.spotandtango.com/{{article.slug}}/{{article.issue_name_slug}}/dog-food/"\n' ' }\n' ' ]\n' ' }\n' '</script>\n' '\n' '<meta property="og:locale" content="en_US" />\n' '<meta property="og:type" content="article" />\n' '<meta\n' ' property="og:title"\n' ' content="Best {{article.issue_name}} {{article.breed_name}} Dog Food - ' 'Spot and Tango"\n' '/>\n' '<meta\n' ' property="og:description"\n' ' content="Spot & Tango is all about making dog food personal. That’s why we ' 'offer customized plans based on your dog’s specific breed, weight, age, and ' 'other dietary needs. After filling out our questionnaire, you’ll receive a ' 'personalized recommendation that you know is just right for your ' '{{article.breed_name}}..."\n' '/>\n' '<meta\n' ' property="og:url"\n' ' ' 'content="https://learn.spotandtango.com/{{article.slug}}/{{article.issue_name_slug}}/dog-food/"\n' '/>\n' '<meta property="og:site_name" content="Spot & Tango" />\n' '<meta\n' ' property="article:publisher"\n' ' content="https://www.facebook.com/spotandtango/"\n' '/>\n' '<meta property="article:section" content="Pet Food" />\n' '<meta property="article:published_time" content="2019-09-25T11:51:31+00:00" ' '/>\n' '<meta property="article:modified_time" content="2019-09-25T11:51:31+00:00" ' '/>\n' '<meta property="og:updated_time" content="2019-09-25T11:51:31+00:00" />\n' '<meta property="og:image" content="{{ article.featured_image.url }}" />\n' '<meta\n' ' property="og:image:secure_url"\n' ' content="{{ article.featured_image.url }}"\n' '/>\n' '<meta name="twitter:card" content="summary_large_image" />\n' '<meta\n' ' name="twitter:description"\n' ' content="Spot & Tango is all about making dog food personal. That’s why we ' 'offer customized plans based on your dog’s specific breed, weight, age, and ' 'other dietary needs. After filling out our questionnaire, you’ll receive a ' 'personalized recommendation that you know is just right for your ' '{{article.breed_name}}..."\n' '/>\n' '<meta\n' ' name="twitter:title"\n' ' content="Best {{article.breed_name}} Dog Food from @SpotandTango"\n' '/>\n' '<meta name="twitter:site" content="@spotandtango" />\n' '<meta name="twitter:image" content="{{ article.featured_image.url }}" />\n' '<meta name="twitter:creator" content="@spotandtango" />\n' '{% endblock %}\n' '<!-- END block og_and_extra_meta_tags -->\n' '\n' '{% block navbar %} {% include "core/navbar_articles.html" %} {% endblock %} ' '{%\n' 'block content %}\n' '<article class="breed-article">\n' ' <section class="breed-section">\n' ' <div class="breed-section-block">\n' ' <h6>Breed</h6>\n' ' <h3 class="breed-card__breed">{{ article.breed_name }}</h3>\n' ' </div>\n' ' <div class="breed-section-block">\n' ' <h6>AKC Grouping</h6>\n' ' <span>{{ article.akc_grouping }}</span>\n' ' </div>\n' ' <div class="breed-section-block">\n' ' <h6>Temperament</h6>\n' ' <ul>\n' ' <li>{{ article.temperament_1 }}</li>\n' ' <li>{{ article.temperament_2 }}</li>\n' ' <li>{… <trimmed 7626 bytes string> |
origin | <django.template.base.Origin object at 0x7f298badc9a0> |
self | <django.template.loaders.app_directories.Loader object at 0x7f298bbebf40> |
skip | None |
template_name | 'core/issue_article_detail.html' |
tried | [(<django.template.base.Origin object at 0x7f298bb370a0>, 'Source does not exist'), (<django.template.base.Origin object at 0x7f298bb37f40>, 'Source does not exist'), (<django.template.base.Origin object at 0x7f298bb37670>, 'Source does not exist'), (<django.template.base.Origin object at 0x7f298badc2b0>, 'Source does not exist'), (<django.template.base.Origin object at 0x7f298badcfa0>, 'Source does not exist'), (<django.template.base.Origin object at 0x7f298badc0d0>, 'Source does not exist'), (<django.template.base.Origin object at 0x7f298badc100>, 'Source does not exist')] |
/app/.heroku/python/lib/python3.8/site-packages/django/template/base.py
, line 155, in __init__
engine = Engine.get_default()
if origin is None:
origin = Origin(UNKNOWN_SOURCE)
self.name = name
self.origin = origin
self.engine = engine
self.source = str(template_string) # May be lazy.
self.nodelist = self.compile_nodelist()…
def __iter__(self):
for node in self.nodelist:
yield from node
def _render(self, context):
Variable | Value |
---|---|
engine | <django.template.engine.Engine object at 0x7f298bc2d370> |
name | 'core/issue_article_detail.html' |
origin | <django.template.base.Origin object at 0x7f298badc9a0> |
self | <django.template.base.Template object at 0x7f298badc460> |
template_string | ("{% extends 'core/base.html' %} {% load static %} {% block title %} {{\n" 'article.title }} - Spot and Tango {% endblock %} {% block canonicallink %}\n' '<link rel="canonical" href="{{canonical_path}}" />\n' '{% endblock %}\n' '\n' '<!-- Meta tags for SEO and OpenGraph (personalize how shareable link looks ' 'like on social media) -->\n' '{% block og_and_extra_meta_tags %}\n' '<script type="application/ld+json">\n' ' {\n' ' "@context": "https://schema.org/",\n' ' "@type": "BreadcrumbList",\n' ' "itemListElement": [\n' ' {\n' ' "@type": "ListItem",\n' ' "position": 1,\n' ' "name": "Best {{article.breed_name}} Dog Food",\n' ' "item": "https://learn.spotandtango.com/{{article.slug}}/dog-food/"\n' ' },\n' ' {\n' ' "@type": "ListItem",\n' ' "position": 2,\n' ' "name": "{{article.issue_name}} {{article.breed_name}} Dog Food",\n' ' "item": ' '"https://learn.spotandtango.com/{{article.slug}}/{{article.issue_name_slug}}/dog-food/"\n' ' }\n' ' ]\n' ' }\n' '</script>\n' '\n' '<meta property="og:locale" content="en_US" />\n' '<meta property="og:type" content="article" />\n' '<meta\n' ' property="og:title"\n' ' content="Best {{article.issue_name}} {{article.breed_name}} Dog Food - ' 'Spot and Tango"\n' '/>\n' '<meta\n' ' property="og:description"\n' ' content="Spot & Tango is all about making dog food personal. That’s why we ' 'offer customized plans based on your dog’s specific breed, weight, age, and ' 'other dietary needs. After filling out our questionnaire, you’ll receive a ' 'personalized recommendation that you know is just right for your ' '{{article.breed_name}}..."\n' '/>\n' '<meta\n' ' property="og:url"\n' ' ' 'content="https://learn.spotandtango.com/{{article.slug}}/{{article.issue_name_slug}}/dog-food/"\n' '/>\n' '<meta property="og:site_name" content="Spot & Tango" />\n' '<meta\n' ' property="article:publisher"\n' ' content="https://www.facebook.com/spotandtango/"\n' '/>\n' '<meta property="article:section" content="Pet Food" />\n' '<meta property="article:published_time" content="2019-09-25T11:51:31+00:00" ' '/>\n' '<meta property="article:modified_time" content="2019-09-25T11:51:31+00:00" ' '/>\n' '<meta property="og:updated_time" content="2019-09-25T11:51:31+00:00" />\n' '<meta property="og:image" content="{{ article.featured_image.url }}" />\n' '<meta\n' ' property="og:image:secure_url"\n' ' content="{{ article.featured_image.url }}"\n' '/>\n' '<meta name="twitter:card" content="summary_large_image" />\n' '<meta\n' ' name="twitter:description"\n' ' content="Spot & Tango is all about making dog food personal. That’s why we ' 'offer customized plans based on your dog’s specific breed, weight, age, and ' 'other dietary needs. After filling out our questionnaire, you’ll receive a ' 'personalized recommendation that you know is just right for your ' '{{article.breed_name}}..."\n' '/>\n' '<meta\n' ' name="twitter:title"\n' ' content="Best {{article.breed_name}} Dog Food from @SpotandTango"\n' '/>\n' '<meta name="twitter:site" content="@spotandtango" />\n' '<meta name="twitter:image" content="{{ article.featured_image.url }}" />\n' '<meta name="twitter:creator" content="@spotandtango" />\n' '{% endblock %}\n' '<!-- END block og_and_extra_meta_tags -->\n' '\n' '{% block navbar %} {% include "core/navbar_articles.html" %} {% endblock %} ' '{%\n' 'block content %}\n' '<article class="breed-article">\n' ' <section class="breed-section">\n' ' <div class="breed-section-block">\n' ' <h6>Breed</h6>\n' ' <h3 class="breed-card__breed">{{ article.breed_name }}</h3>\n' ' </div>\n' ' <div class="breed-section-block">\n' ' <h6>AKC Grouping</h6>\n' ' <span>{{ article.akc_grouping }}</span>\n' ' </div>\n' ' <div class="breed-section-block">\n' ' <h6>Temperament</h6>\n' ' <ul>\n' ' <li>{{ article.temperament_1 }}</li>\n' ' <li>{{ article.temperament_2 }}</li>\n' ' <li>{… <trimmed 7626 bytes string> |
/app/.heroku/python/lib/python3.8/site-packages/django/template/base.py
, line 193, in compile_nodelist
tokens = lexer.tokenize()
parser = Parser(
tokens, self.engine.template_libraries, self.engine.template_builtins,
self.origin,
)
try:
return parser.parse()…
except Exception as e:
if self.engine.debug:
e.template_debug = self.get_exception_info(e, e.token)
raise
def get_exception_info(self, exception, token):
Variable | Value |
---|---|
lexer | <django.template.base.DebugLexer object at 0x7f298badc250> |
parser | <django.template.base.Parser object at 0x7f298ba90640> |
self | <django.template.base.Template object at 0x7f298badc460> |
tokens | [<django.template.base.Token object at 0x7f298badc2e0>, <django.template.base.Token object at 0x7f298badca60>, <django.template.base.Token object at 0x7f298badc370>, <django.template.base.Token object at 0x7f298badc3a0>, <django.template.base.Token object at 0x7f298badc4f0>, <django.template.base.Token object at 0x7f298badc5b0>, <django.template.base.Token object at 0x7f298badc670>, <django.template.base.Token object at 0x7f298badc6d0>, <django.template.base.Token object at 0x7f298badc730>, <django.template.base.Token object at 0x7f298badc790>, <django.template.base.Token object at 0x7f298badc850>, <django.template.base.Token object at 0x7f298badc8b0>, <django.template.base.Token object at 0x7f298badc910>, <django.template.base.Token object at 0x7f298badc9d0>, <django.template.base.Token object at 0x7f298badca90>, <django.template.base.Token object at 0x7f298badcaf0>, <django.template.base.Token object at 0x7f298badcb50>, <django.template.base.Token object at 0x7f298badcbb0>, <django.template.base.Token object at 0x7f298badcc10>, <django.template.base.Token object at 0x7f298badccd0>, <django.template.base.Token object at 0x7f298badcd30>, <django.template.base.Token object at 0x7f298badcd90>, <django.template.base.Token object at 0x7f298badcdf0>, <django.template.base.Token object at 0x7f298badce50>, <django.template.base.Token object at 0x7f298badceb0>, <django.template.base.Token object at 0x7f298badcf10>, <django.template.base.Token object at 0x7f298badcfd0>, <django.template.base.Token object at 0x7f298ba8c130>, <django.template.base.Token object at 0x7f298ba8c040>, <django.template.base.Token object at 0x7f298ba8c0d0>, <django.template.base.Token object at 0x7f298ba8c190>, <django.template.base.Token object at 0x7f298ba8c520>, <django.template.base.Token object at 0x7f298ba8c280>, <django.template.base.Token object at 0x7f298ba8c220>, <django.template.base.Token object at 0x7f298ba8c2b0>, <django.template.base.Token object at 0x7f298ba8c310>, <django.template.base.Token object at 0x7f298ba8c1c0>, <django.template.base.Token object at 0x7f298ba8c3a0>, <django.template.base.Token object at 0x7f298ba8c430>, <django.template.base.Token object at 0x7f298ba8c490>, <django.template.base.Token object at 0x7f298ba8c580>, <django.template.base.Token object at 0x7f298ba8c970>, <django.template.base.Token object at 0x7f298ba8c700>, <django.template.base.Token object at 0x7f298ba8c640>, <django.template.base.Token object at 0x7f298ba8c6d0>, <django.template.base.Token object at 0x7f298ba8c5e0>, <django.template.base.Token object at 0x7f298ba8c8e0>, <django.template.base.Token object at 0x7f298ba8c7c0>, <django.template.base.Token object at 0x7f298ba8c850>, <django.template.base.Token object at 0x7f298ba8c910>, <django.template.base.Token object at 0x7f298ba8c9a0>, <django.template.base.Token object at 0x7f298ba8cf10>, <django.template.base.Token object at 0x7f298ba8cac0>, <django.template.base.Token object at 0x7f298ba8ca60>, <django.template.base.Token object at 0x7f298ba8caf0>, <django.template.base.Token object at 0x7f298ba8ca00>, <django.template.base.Token object at 0x7f298ba8cc40>, <django.template.base.Token object at 0x7f298ba8cbe0>, <django.template.base.Token object at 0x7f298ba8cc70>, <django.template.base.Token object at 0x7f298ba8ccd0>, <django.template.base.Token object at 0x7f298ba8cdf0>, <django.template.base.Token object at 0x7f298ba8cd90>, <django.template.base.Token object at 0x7f298ba8ce20>, <django.template.base.Token object at 0x7f298ba8ceb0>, <django.template.base.Token object at 0x7f298ba8cd00>, <django.template.base.Token object at 0x7f298ba8cfa0>, <django.template.base.Token object at 0x7f298ba8e070>, <django.template.base.Token object at 0x7f298ba8e040>, <django.template.base.Token object at 0x7f298ba8e0d0>, <django.template.base.Token object at 0x7f298ba8e100>, <django.template.base.Token object at 0x7f298ba8e550>, <django.template.base.Token object at 0x7f298ba8e2e0>, <django.template.base.Token object at 0x7f298ba8e220>, <django… <trimmed 6607 bytes string> |
/app/.heroku/python/lib/python3.8/site-packages/django/template/base.py
, line 478, in parse
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
except Exception as e:
raise self.error(token, e)…
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
self.unclosed_block_tag(parse_until)
return nodelist
Variable | Value |
---|---|
command | 'extends' |
compile_func | <function do_extends at 0x7f298d24f820> |
nodelist | [] |
parse_until | [] |
self | <django.template.base.Parser object at 0x7f298ba90640> |
token | <django.template.base.Token object at 0x7f298badc2e0> |
/app/.heroku/python/lib/python3.8/site-packages/django/template/base.py
, line 476, in parse
try:
compile_func = self.tags[command]
except KeyError:
self.invalid_block_tag(token, command, parse_until)
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)…
except Exception as e:
raise self.error(token, e)
self.extend_nodelist(nodelist, compiled_result, token)
# Compile success. Remove the token from the command stack.
self.command_stack.pop()
if parse_until:
Variable | Value |
---|---|
command | 'extends' |
compile_func | <function do_extends at 0x7f298d24f820> |
nodelist | [] |
parse_until | [] |
self | <django.template.base.Parser object at 0x7f298ba90640> |
token | <django.template.base.Token object at 0x7f298badc2e0> |
/app/.heroku/python/lib/python3.8/site-packages/django/template/loader_tags.py
, line 278, in do_extends
the parent template itself (if it evaluates to a Template object).
"""
bits = token.split_contents()
if len(bits) != 2:
raise TemplateSyntaxError("'%s' takes one argument" % bits[0])
bits[1] = construct_relative_path(parser.origin.template_name, bits[1])
parent_name = parser.compile_filter(bits[1])
nodelist = parser.parse()…
if nodelist.get_nodes_by_type(ExtendsNode):
raise TemplateSyntaxError("'%s' cannot appear more than once in the same template" % bits[0])
return ExtendsNode(nodelist, parent_name)
@register.tag('include')
Variable | Value |
---|---|
bits | ['extends', "'core/base.html'"] |
parent_name | <django.template.base.FilterExpression object at 0x7f298ba904f0> |
parser | <django.template.base.Parser object at 0x7f298ba90640> |
token | <django.template.base.Token object at 0x7f298badc2e0> |
/app/.heroku/python/lib/python3.8/site-packages/django/template/base.py
, line 472, in parse
# tag.
self.command_stack.append((command, token))
# Get the tag callback function from the ones registered with
# the parser.
try:
compile_func = self.tags[command]
except KeyError:
self.invalid_block_tag(token, command, parse_until)…
# Compile the callback into a node object and add it to
# the node list.
try:
compiled_result = compile_func(self, token)
except Exception as e:
raise self.error(token, e)
Variable | Value |
---|---|
command | 'endblock' |
compile_func | <function do_static at 0x7f298d6a0af0> |
compiled_result | <django.templatetags.static.StaticNode object at 0x7f298ba95ee0> |
filter_expression | <django.template.base.FilterExpression object at 0x7f298ba9f790> |
nodelist | [<TextNode: ' '>, <django.template.defaulttags.LoadNode object at 0x7f298ba90610>, <TextNode: ' '>, <Block Node: title. Contents: [<TextNode: ' {{\narticle.title }} - Sp'>]>, <TextNode: ' '>, <Block Node: canonicallink. Contents: [<TextNode: '\n<link rel="canonical" hr'>, <Variable Node: canonical_path>, <TextNode: '" />\n'>]>, <TextNode: '\n\n<!-- Meta tags for SEO '>, <Block Node: og_and_extra_meta_tags. Contents: [<TextNode: '\n<script type="applicatio'>, <Variable Node: article.breed_name>, <TextNode: ' Dog Food",\n "item'>, <Variable Node: article.slug>, <TextNode: '/dog-food/"\n },\n '>, <Variable Node: article.issue_name>, <TextNode: ' '>, <Variable Node: article.breed_name>, <TextNode: ' Dog Food",\n "item'>, <Variable Node: article.slug>, <TextNode: '/'>, <Variable Node: article.issue_name_slug>, <TextNode: '/dog-food/"\n }\n ]'>, <Variable Node: article.issue_name>, <TextNode: ' '>, <Variable Node: article.breed_name>, <TextNode: ' Dog Food - Spot and Tang'>, <Variable Node: article.breed_name>, <TextNode: '..."\n/>\n<meta\n property='>, <Variable Node: article.slug>, <TextNode: '/'>, <Variable Node: article.issue_name_slug>, <TextNode: '/dog-food/"\n/>\n<meta prop'>, <Variable Node: article.featured_image.url>, <TextNode: '" />\n<meta\n property="og'>, <Variable Node: article.featured_image.url>, <TextNode: '"\n/>\n<meta name="twitter:'>, <Variable Node: article.breed_name>, <TextNode: '..."\n/>\n<meta\n name="twi'>, <Variable Node: article.breed_name>, <TextNode: ' Dog Food from @SpotandTa'>, <Variable Node: article.featured_image.url>, <TextNode: '" />\n<meta name="twitter:'>]>, <TextNode: '\n<!-- END block og_and_ex'>, <Block Node: navbar. Contents: [<TextNode: ' '>, <django.template.loader_tags.IncludeNode object at 0x7f298ba92850>, <TextNode: ' '>]>, <TextNode: ' {%\nblock content %}\n<art'>, <Variable Node: article.breed_name>, <TextNode: '</h3>\n </div>\n <div'>, <Variable Node: article.akc_grouping>, <TextNode: '</span>\n </div>\n <d'>, <Variable Node: article.temperament_1>, <TextNode: '</li>\n <li>'>, <Variable Node: article.temperament_2>, <TextNode: '</li>\n <li>'>, <Variable Node: article.temperament_3>, <TextNode: '</li>\n </ul>\n </d'>, <Variable Node: article.demeanor>, <TextNode: '</span>\n </div>\n </se'>, <Variable Node: article.paragraph_1_section_heading>, <TextNode: '</h3>\n <img\n '>, <Variable Node: article.breed_name>, <TextNode: '"\n src="'>, <Variable Node: article.featured_image.url>, <TextNode: '"\n />\n <p>'>, <Variable Node: article.paragraph_1>, <TextNode: '</p>\n <div class="sn'>, <Variable Node: article.paragraph_2_section_heading>, <TextNode: '</h3>\n <p>'>, <Variable Node: article.paragraph_2>, <TextNode: '</p>\n <a\n cla'>, <Variable Node: article.breed_name>, <TextNode: ' the Right Food</a\n '>, <django.templatetags.static.StaticNode object at 0x7f298ba95130>, <TextNode: '" />\n <div>\n '>, <Variable Node: article.energy>, <TextNode: '</span>\n </div>\n'>, <django.templatetags.static.StaticNode object at 0x7f298ba951f0>, <TextNode: '" />\n <div>\n '>, <Variable Node: article.grooming>, <TextNode: '</span>\n </div>\n'>, <django.templatetags.static.StaticNode object at 0x7f298ba955e0>, <TextNode: '" />\n <div>\n '>, <Variable Node: article.training>, <TextNode: '</span>\n </div>\n'>, <django.templatetags.static.StaticNode object at 0x7f298ba959d0>, <TextNode: '" />\n <div>\n '>, <Variable Node: article.shedding>, <TextNode: '</span>\n </div>\n'>, <Variable Node: article.paragraph_3_section_heading>, <TextNode: '</h3>\n <p>'>, <Variable Node: article.paragraph_3>, <TextNode: '</p>\n <div>\n '>, <Variable Node: article.breed_name>, <TextNode: '"\n src="'>, <django.templatetags.static.StaticNode object at 0x7f298ba95ee0>, <TextNode: '"\n />\n </div>'>, <Variable Node: artic… <trimmed 4496 bytes string> |
parse_until | [] |
self | <django.template.base.Parser object at 0x7f298ba90640> |
token | <django.template.base.Token object at 0x7f298ba90490> |
var_node | <Variable Node: article.paragraph_5> |
/app/.heroku/python/lib/python3.8/site-packages/django/template/base.py
, line 531, in invalid_block_tag
"Invalid block tag on line %d: '%s', expected %s. Did you "
"forget to register or load this tag?" % (
token.lineno,
command,
get_text_list(["'%s'" % p for p in parse_until], 'or'),
),
)
raise self.error(…
token,
"Invalid block tag on line %d: '%s'. Did you forget to register "
"or load this tag?" % (token.lineno, command)
)
def unclosed_block_tag(self, parse_until):
Variable | Value |
---|---|
command | 'endblock' |
parse_until | [] |
self | <django.template.base.Parser object at 0x7f298ba90640> |
token | <django.template.base.Token object at 0x7f298ba90490> |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
HTTP_ACCEPT | '*/*' |
HTTP_CONNECTION | 'close' |
HTTP_CONNECT_TIME | '0' |
HTTP_HOST | 'learn.spotandtango.com' |
HTTP_TOTAL_ROUTE_TIME | '0' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_VIA | '1.1 vegur' |
HTTP_X_FORWARDED_FOR | '44.192.75.131' |
HTTP_X_FORWARDED_PORT | '443' |
HTTP_X_FORWARDED_PROTO | 'https' |
HTTP_X_REQUEST_ID | 'e3242aa2-e8e5-4c79-b5e5-236887438ac8' |
HTTP_X_REQUEST_START | '1711642547324' |
PATH_INFO | '/portuguese-podengo/high-protein/dog-food/' |
QUERY_STRING | '' |
RAW_URI | '/portuguese-podengo/high-protein/dog-food/' |
REMOTE_ADDR | '10.1.82.47' |
REMOTE_PORT | '29585' |
REQUEST_METHOD | 'GET' |
SCRIPT_NAME | '' |
SERVER_NAME | '0.0.0.0' |
SERVER_PORT | '55905' |
SERVER_PROTOCOL | 'HTTP/1.1' |
SERVER_SOFTWARE | 'gunicorn/21.2.0' |
gunicorn.socket | <socket.socket fd=10, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.18.164.122', 55905), raddr=('10.1.82.47', 29585)> |
rollbar.uuid | 'c604be62-51eb-4db2-beae-d6a5a61c7f54' |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f298bb237c0> |
wsgi.file_wrapper | <class 'gunicorn.http.wsgi.FileWrapper'> |
wsgi.input | <gunicorn.http.body.Body object at 0x7f298bb7fe80> |
wsgi.input_terminated | True |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
spotandtango.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['spot-and-tango.herokuapp.com', 'learn.spotandtango.com'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'core.User' |
AWS_ACCESS_KEY_ID | '********************' |
AWS_LOCATION | 'production' |
AWS_S3_CUSTOM_DOMAIN | 'spot-and-tango.s3.amazonaws.com' |
AWS_SECRET_ACCESS_KEY | '********************' |
AWS_STORAGE_BUCKET_NAME | 'spot-and-tango' |
BASE_DIR | '/app/server' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
COMPRESSORS | {'css': 'compressor.css.CssCompressor', 'js': 'compressor.js.JsCompressor'} |
COMPRESS_CACHEABLE_PRECOMPILERS | () |
COMPRESS_CACHE_BACKEND | 'default' |
COMPRESS_CACHE_KEY_FUNCTION | '********************' |
COMPRESS_CLEAN_CSS_ARGUMENTS | '' |
COMPRESS_CLEAN_CSS_BINARY | 'cleancss' |
COMPRESS_CLOSURE_COMPILER_ARGUMENTS | '' |
COMPRESS_CLOSURE_COMPILER_BINARY | 'java -jar compiler.jar' |
COMPRESS_CSS_HASHING_METHOD | 'mtime' |
COMPRESS_DATA_URI_MAX_SIZE | 1024 |
COMPRESS_DEBUG_TOGGLE | None |
COMPRESS_ENABLED | False |
COMPRESS_FILTERS | {'css': ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.rCSSMinFilter'], 'js': ['compressor.filters.jsmin.rJSMinFilter']} |
COMPRESS_JINJA2_GET_ENVIRONMENT | <function CompressorConf.JINJA2_GET_ENVIRONMENT at 0x7f298bdae160> |
COMPRESS_MINT_DELAY | 30 |
COMPRESS_MTIME_DELAY | 10 |
COMPRESS_OFFLINE | False |
COMPRESS_OFFLINE_CONTEXT | {'STATIC_URL': '/static/'} |
COMPRESS_OFFLINE_MANIFEST | 'manifest.json' |
COMPRESS_OFFLINE_MANIFEST_STORAGE | 'compressor.storage.OfflineManifestFileStorage' |
COMPRESS_OFFLINE_TIMEOUT | 31536000 |
COMPRESS_OUTPUT_DIR | 'CACHE' |
COMPRESS_PARSER | 'compressor.parser.AutoSelectParser' |
COMPRESS_PRECOMPILERS | (('text/x-scss', 'django_libsass.SassCompiler'),) |
COMPRESS_REBUILD_TIMEOUT | 2592000 |
COMPRESS_ROOT | '/app/server/static-files' |
COMPRESS_STORAGE | 'compressor.storage.CompressorFileStorage' |
COMPRESS_TEMPLATE_FILTER_CONTEXT | {'STATIC_URL': '/static/'} |
COMPRESS_URL | '/static/' |
COMPRESS_URL_PLACEHOLDER | '/__compressor_url_placeholder__/' |
COMPRESS_VERBOSE | False |
COMPRESS_YUGLIFY_BINARY | 'yuglify' |
COMPRESS_YUGLIFY_CSS_ARGUMENTS | '--terminal' |
COMPRESS_YUGLIFY_JS_ARGUMENTS | '--terminal' |
COMPRESS_YUI_BINARY | 'java -jar yuicompressor.jar' |
COMPRESS_YUI_CSS_ARGUMENTS | '' |
COMPRESS_YUI_JS_ARGUMENTS | '' |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | False |
CSRF_COOKIE_NAME | 'csrftoken' |
CSRF_COOKIE_PATH | '/' |
CSRF_COOKIE_SAMESITE | 'Lax' |
CSRF_COOKIE_SECURE | False |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
CSRF_HEADER_NAME | 'HTTP_X_CSRFTOKEN' |
CSRF_TRUSTED_ORIGINS | [] |
CSRF_USE_SESSIONS | False |
CURRENT_DOMAIN | 'learn.spotandtango.com' |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'HOST': 'ec2-54-204-241-136.compute-1.amazonaws.com', 'NAME': 'd5flhrprr152c6', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': 5432, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'hcceuvxwdzlepr'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATA_UPLOAD_MAX_NUMBER_FILES | 100 |
DATETIME_FORMAT | 'N j, Y, P' |
DATETIME_INPUT_FORMATS | ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M'] |
DATE_FORMAT | 'N j, Y' |
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'] |
DEBUG | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
DECIMAL_SEPARATOR | '.' |
DEFAULT_AUTO_FIELD | 'django.db.models.AutoField' |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FILE_STORAGE | 'spotandtango.core.handlers.MediaStorage' |
DEFAULT_FROM_EMAIL | 'Spot and Tango <noreply@spotandtango.com>' |
DEFAULT_HASHING_ALGORITHM | 'sha256' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'django.core.mail.backends.console.EmailBackend' |
EMAIL_HOST | 'localhost' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | '' |
EMAIL_PORT | 25 |
EMAIL_SSL_CERTFILE | None |
EMAIL_SSL_KEYFILE | '********************' |
EMAIL_SUBJECT_PREFIX | '[Django] ' |
EMAIL_TIMEOUT | None |
EMAIL_USE_LOCALTIME | False |
EMAIL_USE_SSL | False |
EMAIL_USE_TLS | False |
ENVIRONMENT | 'production' |
FILE_UPLOAD_DIRECTORY_PERMISSIONS | None |
FILE_UPLOAD_HANDLERS | ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler'] |
FILE_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
FILE_UPLOAD_PERMISSIONS | 420 |
FILE_UPLOAD_TEMP_DIR | None |
FIRST_DAY_OF_WEEK | 0 |
FIXTURE_DIRS | [] |
FORCE_SCRIPT_NAME | None |
FORMAT_MODULE_PATH | None |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.sitemaps', 'django.contrib.sites', 'django.contrib.staticfiles', 'storages', 'rest_framework', 'rest_framework.authtoken', 'django_filters', 'django_extensions', 'compressor', 'spotandtango.core'] |
INTERNAL_IPS | [] |
IN_DEV | False |
IN_PROD | True |
IN_STAGING | False |
LANGUAGES | [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz', 'Algerian Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'fa', 'ur'] |
LANGUAGE_CODE | 'en-us' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_HTTPONLY | False |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LANGUAGE_COOKIE_SAMESITE | None |
LANGUAGE_COOKIE_SECURE | False |
LOCALE_PATHS | [] |
LOGGING | {'disable_existing_loggers': True, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}, 'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}}, 'formatters': {'simple': {'datefmt': '%d/%b/%Y %H:%M:%S', 'format': '[%(asctime)s] %(levelname)s %(message)s'}, 'verbose': {'datefmt': '%d/%b/%Y %H:%M:%S', 'format': '[%(asctime)s] %(levelname)s ' '[%(name)s:%(lineno)s] %(message)s'}}, 'handlers': {'console': {'class': 'logging.StreamHandler', 'filters': ['require_debug_true'], 'level': 'INFO'}, 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler', 'filters': ['require_debug_false'], 'level': 'WARNING'}, 'rollbar': {'access_token': '********************', 'class': 'rollbar.logger.RollbarHandler', 'environment': 'production', 'filters': ['require_debug_false'], 'level': 'WARNING'}}, 'loggers': {'django': {'handlers': ['console', 'rollbar'], 'level': 'INFO'}, 'spotandtango': {'handlers': ['console', 'rollbar'], 'level': 'DEBUG', 'propagate': True}, 'spotandtango.request': {'handlers': [], 'level': 'INFO', 'propagate': True}, 'spotandtango.tasks': {'handlers': [], 'level': 'INFO', 'propagate': True}}, 'version': 1} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIAFILES_LOCATION | 'production/media' |
MEDIA_ROOT | '/app/server/media-files' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'rollbar.contrib.django.middleware.RollbarNotifierMiddleware'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
REST_FRAMEWORK | {'DEFAULT_AUTHENTICATION_CLASSES': ('rest_framework.authentication.TokenAuthentication',), 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',), 'DEFAULT_PAGINATION_CLASS': 'spotandtango.core.pagination.PageNumberPagination', 'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.IsAuthenticated',), 'DEFAULT_RENDERER_CLASSES': ('rest_framework.renderers.JSONRenderer',)} |
ROLLBAR | {'access_token': '********************', 'branch': 'master', 'environment': 'production', 'root': '/app/server'} |
ROOT_URLCONF | 'spotandtango.urls' |
SECRET_KEY | '********************' |
SECURE_BROWSER_XSS_FILTER | False |
SECURE_CONTENT_TYPE_NOSNIFF | True |
SECURE_HSTS_INCLUDE_SUBDOMAINS | False |
SECURE_HSTS_PRELOAD | False |
SECURE_HSTS_SECONDS | 0 |
SECURE_PROXY_SSL_HEADER | ('HTTP_X_FORWARDED_PROTO', 'https') |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | True |
SERVER_EMAIL | 'Spot and Tango <noreply@spotandtango.com>' |
SESSION_CACHE_ALIAS | 'default' |
SESSION_COOKIE_AGE | 1209600 |
SESSION_COOKIE_DOMAIN | None |
SESSION_COOKIE_HTTPONLY | True |
SESSION_COOKIE_NAME | 'sessionid' |
SESSION_COOKIE_PATH | '/' |
SESSION_COOKIE_SAMESITE | 'Lax' |
SESSION_COOKIE_SECURE | False |
SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
SESSION_FILE_PATH | None |
SESSION_SAVE_EVERY_REQUEST | False |
SESSION_SERIALIZER | 'django.contrib.sessions.serializers.JSONSerializer' |
SETTINGS_MODULE | 'spotandtango.settings' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
SITE_ID | 1 |
STAFF_EMAIL | 'Neil Shah <neil@thinknimble.com>' |
STATICFILES_DIRS | ['/app/server/static'] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', 'compressor.finders.CompressorFinder'] |
STATICFILES_STORAGE | 'whitenoise.storage.CompressedManifestStaticFilesStorage' |
STATIC_ROOT | '/app/server/static-files' |
STATIC_URL | '/static/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/app/server/../client/dist/'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THOUSAND_SEPARATOR | ',' |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'UTC' |
USE_AWS_STORAGE | True |
USE_CUSTOM_SMTP | 'False' |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | True |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | 'spotandtango.wsgi.application' |
X_FRAME_OPTIONS | 'DENY' |
YEAR_MONTH_FORMAT | 'F Y' |
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 page generated by the handler for this status code.