【问题标题】:Unable to pass data inside anchor tag to views in Django无法将锚标记内的数据传递给 Django 中的视图
【发布时间】:2017-03-21 11:57:20
【问题描述】:

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

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

【问题讨论】:

  • 在 urls.py 中使用 r'^doc_viewer/$',在 html 中您使用 query_name 作为参数,但在视图中尝试获取 project_name。这两个应该具有相同的名称。

标签: python django django-templates django-views


【解决方案1】:

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

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

另外最好在最后加上索引(因为^$可以匹配大部分的url,让它们坏掉)。

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

【讨论】:

    猜你喜欢
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多