2017-03-21 26 views
0

文書検索エンジンを構築しようとしています。クエリを入力すると、ユーザーは関連性によってソートされたドキュメントのリストを取得します。しかし、文書の名前を取得するだけではあまり役に立ちません。だから単にテーブルを表示するのではなく、私はドキュメント名をハイパーリンクしました。アンカータグの中には、ドキュメントの名前があります。ユーザーがこのリンクをクリックすると、ドキュメント名を使用してこのファイルの内容をユーザーに表示します。基本的に、ユーザーがリンクをクリックすると、タグ内のコンテンツをビュー機能に渡したいと思っています。以下は、関連する私のコードのいくつかの部分です。アンカータグ内のデータをDjangoのビューに渡すことができません

.htmlページ

<table class = "tab_results"> 
    <tr> 
     <th>Project Name</th> 
     <th>Score</th> 
    </tr> 
    {% for each_pair in results%} 
    <tr> 
     <td name = 'project_name'><a id = 'doc_name' href = "doc_viewer/?query_name={{ each_pair.0|urlencode }}">{{ each_pair.0 }}</a></td> 
     <td>{{ each_pair.1 }}</td> 
    </tr> 
    {% endfor %} 
</table> 

urls.pyファイル

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index), 
    url(r'^index$', views.index), 
    url(r'^[?]query=', views.doc_scorer, name="doc_scorer"), 
    url(r'^doc_viewer[/]', views.doc_viewer, name="doc_viewer"), 
] 

最後views.pyファイル

def doc_viewer(request): 
    project_name = request.GET.get('project_name') 
    context = {'doc_data': search_query.doc_data(project_name)} 
    return render_to_response('search/doc_viewer_temp.html', context) 

私はここに与えられたものに続くが、私は次のエラーを取得する

TypeError at /search/doc_viewer/ 
cannot use label indexing with a null key 

問題は、変数project_nameNULLであることです。私はthisリンクからの提案を試みたが、それは動作させることができない。私が間違っていると思っていること。あなたは、URLの末尾に$を使用することができ、クエリのために事前に感謝

+0

urls.pyで 'r '^ doc_viewer/$''を使用すると、 'query_name'をパラメータとして使用していますが、' project_name'を取得しようとしています。これらの2つは同じ名前を持つ必要があります。 –

答えて

1

:^ $は、URLのほとんどが一致し、それらを作ることができるので、

url(r'^doc_viewer/$', views.doc_viewer, name="doc_viewer"), 
url(r'^$', views.index) 

はまた、(最後にインデックスを追加することをお勧めします壊れた)。

また、クエリの名前は、request.GET.get()関数のパラメータと同じである必要があります。ビューの機能では、query_nameをhtmlに、project_nameをビュー関数に使用しました。

関連する問題