ich bin neu in django und Python, ich bin nach einem django Tutorial und ich immer die folgenden FehlerIch halte den folgenden Fehler „lokalen Variable‚TOTAL_RESULTS‘vor der Zuweisung referenziert“ immer
UnboundLocalError at /blog/search/
local variable 'total_results' referenced before assignment
heren meinen Code bekommen
def post_search(request):
form = SearchForm()
if 'query' in request.GET:
form = SearchForm(request.GET)
if form.is_valid():
cd = form.cleaned_data
results = SearchQuerySet().models(Post)\
.filter(content=cd['query']).load_all()
# count total results
total_results = results.count()
template = 'blog/post/search.html'
context = {
'form': form,
'cd': cd,
'results': results,
'total_results': total_results
}
return render(request, template, context)
ich versuchte es auch wie diese origanally, weil das ist, wie das Tutorial hatte
return render(request, template, {
'form': form,
'cd': cd,
'results': results,
'total_results': total_results
})
aber das hat auch nicht funktioniert
Ich verstehe, was die Fehlermeldung sagt, aber das ist, wie das Tutorial es hat. Was ist die richtige Syntax, um dies zu erreichen? alle Anleitung ist willkommen EDIT
: hier ist die Code-Vorlage
{% extends "blog/base.html" %}
{% block title %}Search{% endblock %}
{% block content %}
{% if "query" in request.GET %}
<h1>Posts containing "{{ cd.query }}"</h1>
<h3>Found {{ total_results }} result{{ total_results|pluralize}}</h3>
{% for result in results %}
{% with post=result.object %}
<h4><a href="{{ post.get_absolute_url }}">{{ post.title }}</a></h4>
{{ post.body|truncatewords:5 }}
{% endwith %}
{% empty %}
<p>There are no results for your query.</p>
{% endfor %}
<p><a href="{% url 'blog:post_search' %}">Search again</a></p>
{% else %}
<h1>Search for posts</h1>
<form action="." method="get">
{{ form.as_p }}
<input type="submit" value="Search">
</form>
{% endif %}
{% endblock %}
Die Art, wie Sie es oben haben, adressiert cd nicht, also tat ich cd = []. dann, wenn ich versuche zu suchen, bekomme ich diese Nachricht 'NoneType' Objekt hat kein Attribut '_default_manager' – losee
@lose guten Punkt. Lassen Sie uns zuerst einigen, was Sie tun möchten, wenn das Formular die Validierung nicht besteht - einen Fehler werfen? .. danke. – alecxe