Django forms can't find my template -
i'm trying make use of first django form, following this example. need provide explicit html form myself, or django's form class me? if so, how?
here's current error:
internal server error: /showcrime/query traceback (most recent call last): file "/library/python/2.7/site-packages/django/core/handlers/base.py", line 115, in get_response response = callback(request, *callback_args, **callback_kwargs) file "/users/rik/code/eclipse/djoakdata/showcrime/views.py", line 43, in getquery return render(request, 'getquery.html', {'form': qform}) file "/library/python/2.7/site-packages/django/shortcuts/__init__.py", line 53, in render return httpresponse(loader.render_to_string(*args, **kwargs), file "/library/python/2.7/site-packages/django/template/loader.py", line 170, in render_to_string t = get_template(template_name) file "/library/python/2.7/site-packages/django/template/loader.py", line 146, in get_template template, origin = find_template(template_name) file "/library/python/2.7/site-packages/django/template/loader.py", line 139, in find_template raise templatedoesnotexist(name) templatedoesnotexist: getquery.html
showcrime/views.getquery():
def getquery(request): # import pdb; pdb.set_trace() if request.method == 'post': qform = simpleq(request.post) if qform.is_valid(): qrydata = qform.cleaned_data simpleq.nquery += 1 qurl = 'showcrime/plots/%s+%s.png' % (qrydata['beat'], qrydata['crimecat']) return httpresponseredirect(qurl) else: qform = simpleq() return render(request, 'getquery.html', {'form': qform})
showcrime/templates/showcrime/getquery.html
<html> <head> <title>showcrime - query</title> </head> <body> <h1>showcrime - query</h1> {% if form.errors %} <p style="color: red;"> please correct error{{ form.errors|pluralize }} below. </p> {% endif %} <form action="/getquery/" method="post"> <table> {{ form.as_table }} </table> {% csrf_token %} <input type="submit" value="submit query"> </form> </body> </html>
ensure template loaders configured in settings.py;
template_loaders = ( 'django.template.loaders.filesystem.loader', 'django.template.loaders.app_directories.loader', )
it appears you've placed template app's template directory , namespaced app name. should include namespace (your app name) in call render.
return render(request, 'showcrime/getquery.html', {'form': qform})
Comments
Post a Comment