我正在尝试构建文档检索引擎。在输入查询时,用户获得按相关性排序的文档列表。但是获取文档的名称并不是很有帮助。因此,我没有简单地显示表格,而是将文档名称超链接。锚标记内是文档的名称。当用户单击此链接时,我想使用文档名称向用户显示该文件的内容。所以基本上,当用户点击链接时,我想将标签内的内容传递给我的视图功能。以下是我的代码的一些相关部分。
.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_name
是NULL
。我尝试了this链接中的建议,但无法使其正常工作。知道我哪里出错了。提前致谢
答案 0 :(得分:1)
对于查询,您可以在网址末尾使用$
:
url(r'^doc_viewer/$', views.doc_viewer, name="doc_viewer"),
url(r'^$', views.index)
最后在最后添加索引更好(因为^ $可以匹配大多数网址并使其破坏)。
此外,查询名称应与request.GET.get()
函数的参数相同,您在html中使用query_name
,在视图函数中使用project_name
。