Ich habe versucht, eine Suchfunktion für ein Blog-Projekt zu implementieren, und jetzt, dass mehrere verschiedene Implementierungen aus einer Vielzahl von Tutorials alle konsequent 404'd, unabhängig von Eingabe, ich bin auf der Suche nach der Antwort, hier .Benutzerdefinierte Suchanfrage in Django 1.9; GET-Anfragen
Hier ist derjenige, der die elementarsten mir ist, natürlich in views.py
:
def search(request):
try:
q = request.GET['q']
posts = Post.objects.filter(title__search=q)
return render_to_response('blog/search_post_list.html', {'object_list': posts, 'q':q})
except KeyError:
return render_to_response('blog/search_post_list.html')
In blog/urls.py
: url (r '^ Suche', Suche, name = 'Suche'),
Es gibt eine Vorlage unter /templates/blog/search_post_list.html
, die einen Code enthält, der {% for post in object_list %}
enthält, identisch mit einer Arbeitsvorlage.
Also, um jede localhost:8000/blog/search?q=<search_query_here>
gehen ist eine Django Debug-Seite mit einem 404.
Der Grund, warum ich den Code trivialer einfach gehalten habe, weil ich das Gefühl, dass es etwas jenseits der Code sein könnte, und ich Ich hoffe, dass mir jemand sagen kann, wo ich im Code nachsehen soll.
EDIT: Hier ist die 404-Seite:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/blog/search?q=what
Raised by: django.views.generic.detail.DetailView
No post found matching the query
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 404 page.
Hier ist die URL für meine Detailview, da es anscheinend genannt wurde.
url(r'^(?P<slug>[a-zA-Z0-9-]+)/?$',
DetailView.as_view(
model=Post,
)),
Was ist der vollständige Text von der Debug-Seite 404? – Alasdair
@Alasdair 'Seite nicht gefunden (404) anfordern Methode: \t GET URL anfordern: \t http: // localhost: 8000/Blog/search? Q = was Raised by: \t django.views.generic.detail. Detailansicht Kein Beitrag zu der Suchanfrage gefunden Sie sehen diesen Fehler, weil Sie DEBUG = True in Ihrer Django-Einstellungsdatei haben. Ändere das in False, und Django zeigt eine Standard-404-Seite an. " –
Ich erkenne jetzt, dass ich die URL für meine Detailansicht setzen muss. Hinzufügen. –