2016-04-05 7 views
0

私はブログプロジェクトの検索機能を実装しようとしていました。さまざまなチュートリアルのいくつかの実装が、入力に関係なくすべて一貫して404'dになったので、ここで答えを探しています。Django 1.9のカスタム検索クエリ。 GETリクエスト

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') 

blog/urls.pyで: URL(R '^検索'、検索、名称= '検索')、

ここ

views.pyで、もちろん、私には最も基本的なのだ一つです

/templates/blog/search_post_list.htmlには、作業テンプレートと同じコード{% for post in object_list %}を含むテンプレートがあります。

ので、任意のlocalhost:8000/blog/search?q=<search_query_here>に行くと、私は、コードを超えた何かがあるかもしれないという気持ちを持っているので、404

私は自明簡単なコードを守ってきた理由とDjangoのデバッグページがされており、I誰かがコードのどこを調べるか教えてくれることを願っています。

EDIT: ここでは404ページだ:それは明らかに呼ばれたので、

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. 

はここで、私のDetailViewためのURLです。

url(r'^(?P<slug>[a-zA-Z0-9-]+)/?$', 
    DetailView.as_view(
    model=Post, 
    )), 
+0

404デバッグページの全文は何ですか? – Alasdair

+0

@Alasdair 'ページ(404) リクエストメソッドが見つかりません:\t django.views.generic.detail:によって発生し何 8000 /ブログ/検索Q =:\t リクエストURLをGET:\tます。http:// localhostと?。 DetailView Django設定ファイルにDEBUG = Trueが設定されているため、このエラーが表示されています。それをFalseに変更すると、Djangoは標準404ページを表示します。 ' –

+0

私はDetailViewのURLを置く必要があるかもしれないことに気づきました。追加する。 –

答えて

1

URL /blog/search/は検索ビューの代わりに詳細ビューで処理されています。 slug=searchの投稿がないため、404を取得します。

これは、詳細パターンの上に検索URLパターンを移動することで解決できます。

+0

私はまだエラーが発生しています: 'NotImplementedError at/blog/search このデータベースのバックエンドでフルテキスト検索が実装されていません。 ' 意味が分かりません。 sqlite3の問題? –

+1

これはまったく別の問題です。エラーが示すように、sqlite3バックエンドはそれをサポートしていないので、['__search'](https://docs.djangoproject.com/jp/1.9/ref/models/querysets/#search)は使用できません。代わりに 'Post.objects.filter(title__contains = q)'を実行することができます。 – Alasdair

+0

ありがとうございます。 さまざまなデータベースでサポートされているクエリの種類の一般的な図を学習するための優れたリソースがありますか? さらに、いくつかのフィールドが他のフィールドより上位に置かれているが、操作がサポートされていない順序付きリストであることを期待して、異なるクエリで 'posts + ='を実行しようとしました。だから、リソースにはこれを助ける情報が含まれていることを期待しています。 –

0

てみURLパターンをこのように追加します。

url(r'search/', 
    DetailView.as_view(
    model=Post, 
    )), 

(あるいは 'ブログ/検索/')*** /検索/ parameter_name1 = VALUE1のように追加されますGETリクエストのパラメータを持つ ? &パラメータ名2 =値2