Reverse for 'edd.eddcalc.submit_views.submit_hub' not found. 'edd.eddcalc.submit_views.submit_hub' is not a valid view function or pattern name.
Request Method: | GET |
---|---|
Request URL: | https://leonard.io/edd/submit |
Django Version: | 3.1 |
Exception Type: | NoReverseMatch |
Exception Value: | Reverse for 'edd.eddcalc.submit_views.submit_hub' not found. 'edd.eddcalc.submit_views.submit_hub' is not a valid view function or pattern name. |
Exception Location: | /srv/edd/venv/lib/python3.8/site-packages/django/urls/resolvers.py, line 685, in _reverse_with_prefix |
Python Executable: | /usr/bin/uwsgi-core |
Python Version: | 3.8.5 |
Python Path: | ['.', '', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/srv/edd/venv/lib/python3.8/site-packages'] |
Server time: | Thu, 18 Apr 2024 18:10:12 +0200 |
In template /srv/edd/templates/master.html
, error at line 0
1 | {% load static %} |
---|---|
2 | <!DOCTYPE html> |
3 | <html> |
4 | <head> |
5 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
6 | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
7 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
8 | <meta name="author" content="Leonard Ehrenfried"> |
9 | <meta name="description" content="An easy to use spoke length calculator with a large amount of hubs and rims in its database."> |
10 | {% if meta.description %} |
/srv/edd/venv/lib/python3.8/site-packages/django/core/handlers/exception.py
, line 47, in inner
response = await sync_to_async(response_for_exception)(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 | NoReverseMatch("Reverse for 'edd.eddcalc.submit_views.submit_hub' not found. 'edd.eddcalc.submit_views.submit_hub' is not a valid view function or pattern name.") |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f62d2fba970>> |
request | <WSGIRequest: GET '/edd/submit'> |
/srv/edd/venv/lib/python3.8/site-packages/django/core/handlers/base.py
, line 179, 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 submit at 0x7f62d3a42700> |
callback_args | () |
callback_kwargs | {} |
request | <WSGIRequest: GET '/edd/submit'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f62d2fba970> |
wrapped_callback | <function submit at 0x7f62d3a42700> |
./eddcalc/submit_views.py
, line 29, in submit
send_mail(subject, component.to_email(),
"Edd<hello@leonard.io>", ["leonard.ehrenfried@web.de"])
def submit(request):
"""Creates both forms and puts them into the DOM structure ready for
tabifying"""
return render_forms(request, HubForm(), RimForm())…
def submit_hub(request):
if request.method == 'POST':
form = HubForm(request.POST)
if form.is_valid():
Variable | Value |
---|---|
request | <WSGIRequest: GET '/edd/submit'> |
./eddcalc/submit_views.py
, line 16, in render_forms
SUCCESS_URL = "success"
def render_forms(request, hubForm, rimForm, showRim=False):
c = {"hub_form": hubForm, "rim_form": rimForm,
"show_rim": showRim}
tabbedTemplate = get_template("submit.html")
return HttpResponse(tabbedTemplate.render(c))…
def notify(title, component):
timestamp = time.time()
subject = "New %s in edd (%s)" % (title, timestamp)
send_mail(subject, component.to_email(),
Variable | Value |
---|---|
c | {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False} |
hubForm | <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)> |
request | <WSGIRequest: GET '/edd/submit'> |
rimForm | <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)> |
showRim | False |
tabbedTemplate | <django.template.backends.django.Template object at 0x7f62d2cf6520> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/backends/django.py
, line 61, in render
@property
def origin(self):
return self.template.origin
def render(self, context=None, request=None):
context = make_context(context, request, autoescape=self.backend.engine.autoescape)
try:
return self.template.render(context)…
except TemplateDoesNotExist as exc:
reraise(exc, self.backend)
def copy_exception(exc, backend=None):
"""
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
request | None |
self | <django.template.backends.django.Template object at 0x7f62d2cf6520> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 170, in render
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
context.template_name = self.name
return self._render(context)…
else:
return self._render(context)
def compile_nodelist(self):
"""
Parse and compile the template source into a nodelist. If debug
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
self | <django.template.base.Template object at 0x7f62d2a29b50> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 162, in _render
self.nodelist = self.compile_nodelist()
def __iter__(self):
for node in self.nodelist:
yield from node
def _render(self, context):
return self.nodelist.render(context)…
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
self | <django.template.base.Template object at 0x7f62d2a29b50> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bits | [] |
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
node | <ExtendsNode: extends "master.html"> |
self | [<ExtendsNode: extends "master.html">] |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
self | <ExtendsNode: extends "master.html"> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/loader_tags.py
, line 150, in render
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.
with context.render_context.push_state(compiled_parent, isolated_context=False):
return compiled_parent._render(context)…
class IncludeNode(Node):
context_key = '__include_context'
def __init__(self, template, *args, extra_context=None, isolated_context=False, **kwargs):
Variable | Value |
---|---|
block_context | <django.template.loader_tags.BlockContext object at 0x7f62d2a0b370> |
blocks | {'content': <Block Node: content. Contents: []>, 'title': <Block Node: title. Contents: [<TextNode: 'My amazing site'>]>} |
compiled_parent | <django.template.base.Template object at 0x7f62d2a29be0> |
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
node | <django.template.defaulttags.LoadNode object at 0x7f62d2a0b4c0> |
self | <ExtendsNode: extends "master.html"> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 162, in _render
self.nodelist = self.compile_nodelist()
def __iter__(self):
for node in self.nodelist:
yield from node
def _render(self, context):
return self.nodelist.render(context)…
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
self | <django.template.base.Template object at 0x7f62d2a29be0> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | ('">Submit measurements</a>\n' ' </li -->\n' '\n' ' </ul>\n' ' </div>\n' ' </div>\n' ' </div>\n' ' </div>\n' '\n' ' <div class="container">\n' ' ') |
bits | ['', '\n' '<!DOCTYPE html>\n' '<html>\n' ' <head>\n' ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>\n' ' <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\n' ' <meta name="viewport" content="width=device-width, initial-scale=1.0">\n' ' <meta name="author" content="Leonard Ehrenfried">\n' ' <meta name="description" content="An easy to use spoke length calculator ' 'with a large amount of hubs and rims in its database.">\n' ' ', '', '\n <title>', 'Submit measurements', '</title>\n' ' <link ' 'href="//netdna.bootstrapcdn.com/bootswatch/2.1.1/cerulean/bootstrap.min.css" ' 'rel="stylesheet">\n' ' <link ' 'href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.2.1/css/bootstrap-responsive.min.css" ' 'rel="stylesheet">\n' ' <link href="', '/edd/static/style.css', '" rel="stylesheet"/>\n' ' <!--[if lt IE 9]>\n' ' <script ' 'src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.1/html5shiv.js"></script>\n' ' <style> body{ margin-top: 60px; };</style>\n' ' <![endif]-->\n' ' </head>\n' '\n' ' <body>\n' ' <div class="navbar navbar-inverse navbar-fixed-top">\n' ' <div class="navbar-inner">\n' ' <div class="container">\n' ' <a class="brand ellipsis" href="', '/edd/', '">Edd, a spoke length calculator</a>\n' ' <a class="btn btn-navbar" data-toggle="collapse" ' 'data-target=".nav-collapse">\n' ' <span class="icon-bar"></span>\n' ' <span class="icon-bar"></span>\n' ' <span class="icon-bar"></span>\n' ' </a>\n' ' <div class="nav-collapse collapse pull-right">\n' ' <ul class="nav">\n' ' <li>\n' ' <a href="', '/edd/faq', '">About & FAQ</a>\n' ' </li>\n' ' <li>\n' ' <a href="', '/edd/howtomeasure', '">How to measure</a>\n' ' </li>\n' ' <!-- li>\n' ' <a href="', '/edd/submit', '">Submit measurements</a>\n' ' </li -->\n' '\n' ' </ul>\n' ' </div>\n' ' </div>\n' ' </div>\n' ' </div>\n' '\n' ' <div class="container">\n' ' '] |
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
node | <Block Node: content. Contents: []> |
self | [<django.template.defaulttags.LoadNode object at 0x7f62d2a0b4c0>, <TextNode: '\n<!DOCTYPE html>\n<html>\n '>, <IfNode>, <TextNode: '\n <title>'>, <Block Node: title. Contents: [<TextNode: 'My amazing site'>]>, <TextNode: '</title>\n <link href="'>, <django.templatetags.static.StaticNode object at 0x7f62d29c2130>, <TextNode: '" rel="stylesheet"/>\n '>, <django.template.defaulttags.URLNode object at 0x7f62d29c2520>, <TextNode: '">Edd, a spoke length cal'>, <django.template.defaulttags.URLNode object at 0x7f62d29c2ee0>, <TextNode: '">About & FAQ</a>\n '>, <django.template.defaulttags.URLNode object at 0x7f62d29c2220>, <TextNode: '">How to measure</a>\n '>, <django.template.defaulttags.URLNode object at 0x7f62d29c21c0>, <TextNode: '">Submit measurements</a>'>, <Block Node: content. Contents: []>, <TextNode: '\n </div>\n\n <script src='>, <django.templatetags.static.StaticNode object at 0x7f62d29b1220>, <TextNode: '"></script>\n <script typ'>, <django.templatetags.static.StaticNode object at 0x7f62d29b1a30>, <TextNode: '"></script>\n\n '>, <django.template.loader_tags.IncludeNode object at 0x7f62d29b19a0>, <TextNode: '\n</body>\n</html>\n'>] |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
self | <Block Node: content. Contents: []> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/loader_tags.py
, line 62, 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 = type(self)(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)
return result
def super(self):
if not hasattr(self, 'context'):
Variable | Value |
---|---|
block | <Block Node: content. Contents: [<TextNode: '\n <h1>Submit measurement'>, <IfNode>, <TextNode: '"><a href="#hub-form" dat'>, <IfNode>, <TextNode: '"><a href="#rim-form" dat'>, <IfNode>, <TextNode: '" id="hub-form">\n <f'>, <django.template.defaulttags.URLNode object at 0x7f62d29df130>, <TextNode: '">\n '>, <Variable Node: hub_form|bootstrap>, <TextNode: '\n <button class="b'>, <IfNode>, <TextNode: '" id="rim-form">\n <f'>, <django.template.defaulttags.URLNode object at 0x7f62d29dfac0>, <TextNode: '">\n '>, <Variable Node: rim_form|bootstrap>, <TextNode: '\n <button class="b'>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x7f62d2a0b370> |
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
push | <Block Node: content. Contents: [<TextNode: '\n <h1>Submit measurement'>, <IfNode>, <TextNode: '"><a href="#hub-form" dat'>, <IfNode>, <TextNode: '"><a href="#rim-form" dat'>, <IfNode>, <TextNode: '" id="hub-form">\n <f'>, <django.template.defaulttags.URLNode object at 0x7f62d29df130>, <TextNode: '">\n '>, <Variable Node: hub_form|bootstrap>, <TextNode: '\n <button class="b'>, <IfNode>, <TextNode: '" id="rim-form">\n <f'>, <django.template.defaulttags.URLNode object at 0x7f62d29dfac0>, <TextNode: '">\n '>, <Variable Node: rim_form|bootstrap>, <TextNode: '\n <button class="b'>]> |
self | <Block Node: content. Contents: []> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | '" id="hub-form">\n <form class="form-horizontal" method="POST" action="' |
bits | ['\n' ' <h1>Submit measurements to Edd</h1>\n' ' <ul class="nav nav-tabs">\n' ' <li class="', 'active', '"><a href="#hub-form" data-toggle="tab">Submit a hub</a></li>\n' ' <li class="', '', '"><a href="#rim-form" data-toggle="tab">Submit a rim</a></li>\n' ' </ul>\n' ' <div class="tab-content">\n' ' <div class="tab-pane ', 'active', '" id="hub-form">\n <form class="form-horizontal" method="POST" action="'] |
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
node | <django.template.defaulttags.URLNode object at 0x7f62d29df130> |
self | [<TextNode: '\n <h1>Submit measurement'>, <IfNode>, <TextNode: '"><a href="#hub-form" dat'>, <IfNode>, <TextNode: '"><a href="#rim-form" dat'>, <IfNode>, <TextNode: '" id="hub-form">\n <f'>, <django.template.defaulttags.URLNode object at 0x7f62d29df130>, <TextNode: '">\n '>, <Variable Node: hub_form|bootstrap>, <TextNode: '\n <button class="b'>, <IfNode>, <TextNode: '" id="rim-form">\n <f'>, <django.template.defaulttags.URLNode object at 0x7f62d29dfac0>, <TextNode: '">\n '>, <Variable Node: rim_form|bootstrap>, <TextNode: '\n <button class="b'>] |
/srv/edd/venv/lib/python3.8/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
self | <django.template.defaulttags.URLNode object at 0x7f62d29df130> |
/srv/edd/venv/lib/python3.8/site-packages/django/template/defaulttags.py
, line 446, in render
current_app = context.request.resolver_match.namespace
except AttributeError:
current_app = None
# Try to look up the URL. If it fails, raise NoReverseMatch unless the
# {% url ... as var %} construct is used, in which case return nothing.
url = ''
try:
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)…
except NoReverseMatch:
if self.asvar is None:
raise
if self.asvar:
context[self.asvar] = url
Variable | Value |
---|---|
NoReverseMatch | <class 'django.urls.exceptions.NoReverseMatch'> |
args | [] |
context | [{'True': True, 'False': False, 'None': None}, {'hub_form': <HubForm bound=False, valid=Unknown, fields=(name;lfd;rfd;c2l;c2r;shd;frontrear;spacing;submitter)>, 'rim_form': <RimForm bound=False, valid=Unknown, fields=(name;erd;osb;size;submitter)>, 'show_rim': False}] |
current_app | None |
kwargs | {} |
reverse | <function reverse at 0x7f62d349a940> |
self | <django.template.defaulttags.URLNode object at 0x7f62d29df130> |
url | '' |
view_name | 'edd.eddcalc.submit_views.submit_hub' |
/srv/edd/venv/lib/python3.8/site-packages/django/urls/base.py
, line 87, in reverse
(key, ':'.join(resolved_path))
)
else:
raise NoReverseMatch("%s is not a registered namespace" % key)
if ns_pattern:
resolver = get_ns_resolver(ns_pattern, resolver, tuple(ns_converters.items()))
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))…
reverse_lazy = lazy(reverse, str)
def clear_url_caches():
Variable | Value |
---|---|
args | [] |
current_app | None |
current_path | None |
kwargs | {} |
ns_converters | {} |
ns_pattern | '' |
path | [] |
prefix | '/edd/' |
resolved_path | [] |
resolver | <URLResolver 'eddcalc.urls' (None:None) '^/'> |
urlconf | 'eddcalc.urls' |
view | 'edd.eddcalc.submit_views.submit_hub' |
viewname | 'edd.eddcalc.submit_views.submit_hub' |
/srv/edd/venv/lib/python3.8/site-packages/django/urls/resolvers.py
, line 685, in _reverse_with_prefix
(lookup_view_s, arg_msg, len(patterns), patterns)
)
else:
msg = (
"Reverse for '%(view)s' not found. '%(view)s' is not "
"a valid view function or pattern name." % {'view': lookup_view_s}
)
raise NoReverseMatch(msg)…
Variable | Value |
---|---|
_prefix | '/edd/' |
args | () |
kwargs | {} |
lookup_view | 'edd.eddcalc.submit_views.submit_hub' |
lookup_view_s | 'edd.eddcalc.submit_views.submit_hub' |
m | None |
msg | ("Reverse for 'edd.eddcalc.submit_views.submit_hub' not found. " "'edd.eddcalc.submit_views.submit_hub' is not a valid view function or " 'pattern name.') |
n | None |
patterns | [] |
possibilities | [] |
self | <URLResolver 'eddcalc.urls' (None:None) '^/'> |
[unable to retrieve the current user]
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
CONTENT_LENGTH | '' |
CONTENT_TYPE | '' |
DOCUMENT_ROOT | '/home/lenni/www' |
HTTPS | 'on' |
HTTP_ACCEPT | '*/*' |
HTTP_HOST | 'leonard.io' |
HTTP_REFERER | 'http://leonard.io/edd/submit' |
HTTP_USER_AGENT | 'claudebot' |
PATH_INFO | '/submit' |
QUERY_STRING | '' |
REMOTE_ADDR | '3.141.3.178' |
REMOTE_PORT | '8449' |
REQUEST_METHOD | 'GET' |
REQUEST_SCHEME | 'https' |
REQUEST_URI | '/edd/submit' |
SCRIPT_NAME | '/edd' |
SERVER_NAME | 'leonard.io' |
SERVER_PORT | '443' |
SERVER_PROTOCOL | 'HTTP/2.0' |
uwsgi.node | b'leonard' |
uwsgi.version | b'2.0.18-debian' |
wsgi.errors | <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'> |
wsgi.file_wrapper | <built-in function uwsgi_sendfile> |
wsgi.input | <uwsgi._Input object at 0x7f62d2cb5690> |
wsgi.multiprocess | False |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
eddcalc.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | () |
ALLOWED_HOSTS | ['.beta.leonard.io', '.leonard.io', '.lenni.info', 'localhost'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ('django_openid_auth.auth.OpenIDBackend', 'django.contrib.auth.backends.ModelBackend') |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.filebased.FileBasedCache', 'LOCATION': '/var/tmp/django_cache', 'OPTIONS': {'MAX_ENTRIES': 1000}, 'TIMEOUT': 43200}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
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 |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.sqlite3', 'HOST': '', 'NAME': './eddcalc/edd.db', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': ''}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
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_CHARSET | 'utf-8' |
DEFAULT_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FILE_STORAGE | 'django.core.files.storage.FileSystemStorage' |
DEFAULT_FROM_EMAIL | 'webmaster@localhost' |
DEFAULT_HASHING_ALGORITHM | 'sha256' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.EmailBackend' |
EMAIL_HOST | 'in-v3.mailjet.com' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | '3314dd82fa31ce6f72407b64021d74bb' |
EMAIL_PORT | 587 |
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 | True |
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.contenttypes', 'django.contrib.messages', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.staticfiles', 'django_openid_auth', 'eddcalc', 'django.contrib.auth', 'bootstrapform', 'django_verbatim', 'django_markup') |
INTERNAL_IPS | [] |
LANGUAGES | (('de', 'Deutsch'), ('en', 'English'), ('fi', 'Suomi'), ('es', 'Español'), ('fr', 'Français'), ('sv', 'Svenska'), ('it', 'Italiano')) |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'fa', 'ur'] |
LANGUAGE_CODE | 'en' |
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 | {} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/edd/profile/me' |
LOGIN_URL | '/edd/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | () |
MEDIA_ROOT | '' |
MEDIA_URL | '/edd/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | [] |
MIDDLEWARE_CLASSES | ('django.middleware.locale.LocaleMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.messages.middleware.MessageMiddleware') |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
OPENID_CREATE_USERS | True |
OPENID_UPDATE_DETAILS_FROM_SREG | True |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
PROJECT_DIR | './eddcalc' |
ROOT_URLCONF | 'eddcalc.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 | None |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | False |
SERVER_EMAIL | 'root@localhost' |
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 | 'eddcalc.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 |
STATICFILES_DIRS | [] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | './eddcalc/static' |
STATIC_URL | '/edd/static/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['templates'], 'OPTIONS': {}}] |
TEMPLATE_CONTEXT_PROCESSORS | ('eddcalc.context_processors.messages', 'eddcalc.context_processors.openid_username', 'django.contrib.messages.context_processors.messages', 'django.contrib.auth.context_processors.auth', 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 'django.core.context_processors.request') |
TEMPLATE_DEBUG | True |
TEMPLATE_DIRS | ('./eddcalctemplates',) |
TEMPLATE_LOADERS | ('django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', 'django.template.loaders.eggs.Loader') |
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 | 'Europe/Berlin' |
USE_I18N | True |
USE_L10N | False |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | False |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | None |
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.