无法将锚标记内的数据传递给Django中的视图

时间:2017-03-21 11:57:20

标签: python django django-templates django-views

我正在尝试构建文档检索引擎。在输入查询时,用户获得按相关性排序的文档列表。但是获取文档的名称并不是很有帮助。因此,我没有简单地显示表格,而是将文档名称超链接。锚标记内是文档的名称。当用户单击此链接时,我想使用文档名称向用户显示该文件的内容。所以基本上,当用户点击链接时,我想将标签内的内容传递给我的视图功能。以下是我的代码的一些相关部分。

.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链接中的建议,但无法使其正常工作。知道我哪里出错了。提前致谢

1 个答案:

答案 0 :(得分:1)

对于查询,您可以在网址末尾使用$

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

最后在最后添加索引更好(因为^ $可以匹配大多数网址并使其破坏)。

此外,查询名称应与request.GET.get()函数的参数相同,您在html中使用query_name,在视图函数中使用project_name