django在html之间传递变量

Posted

技术标签:

【中文标题】django在html之间传递变量【英文标题】:django transfer variable between html's 【发布时间】:2018-03-07 16:40:12 【问题描述】:

您好,我正在尝试创建一个搜索引擎,我需要将表格 ID 保留在链接中。

在我的 CrawledTables 中有所有带有 id 的表...我需要通过链接将该 id 传递到 var pk...因为然后我请求获取该 pk 并使用pk 获取表名。然后使用表名来获取我搜索的表中的数据......并在这些表信息中创建一个搜索引擎。

错误:

Reverse for 'table_search' with no arguments not found. 1 pattern(s) tried: [u'search/(?P<pk>\\d+)/$']

这是我的 views.py

def search_form(request):
    return render(request, 'search/search.html')


def search(request):
    if 'q' in request.GET and request.GET['q']:
        q = request.GET['q']
        name = Crawledtables.objects.filter(name__icontains=q)
        return render(request, 'search/results.html', 'name': name, 'query': q)
    else:
        return HttpResponse('Please submit a search term.')


def search_form_table(request):
    return render(request, 'search/search_table.html', 'tbl_nm': table_name)


def search_table(request, pk):
    if 'q' in request.GET and request.GET['q']:
        q = request.GET['q']
        table_name = Crawledtables.objects.get(id=pk)
        print table_name
        t = create_model(table_name.name)
        print t
        title = t.objects.filter(title__icontains=q)
        print title
        return render(request, 'search/results_table.html', 'tbl_name': table_name,
                                                             'details': title,
                                                             'query': q)
    else:
        return HttpResponse("Please submit a search term!")

这是我的搜索/urls.py

urlpatterns = [
    url(r'^results$', views.search, name='search'),
    url(r'^$', views.search_form, name='form'),
    url(r'^(?P<pk>\d+)/$', views.search_form_table, name='table_search'),
    url(r'^(?P<pk>\d+)/results$', views.search_table, name='table_results'),
]

这是我的 search.html

<form action="/search/results" method="GET">
    <input type="text" name="q">
    <input type="submit" value="Search">
</form>

results.html

<p> You searched for: <strong> query </strong></p>
% if name %
    <p> Found  name|length </p>
    <ul>
        % for nm in name %
            <li><a href="% url 'search:table_search' %"> nm.name </a>  nm.date </li>

        % endfor %
    </ul>
% else %
    <p> No results found</p>
% endif %

search_table.html

<form action="/search/ pk /results" method="GET">
    <input type="text" name="q">
    <input type="submit" value="Search">
</form>

results_table.html

<p> You searched for: <strong> query </strong></p>
% if details %
    <p> Found  details|length </p>
    <ul>
        % for list in details %
            <li>  list.title </li>
        % endfor %
    </ul>
% else %
    <p> No results found</p>
% endif %

【问题讨论】:

你有什么问题? pk 没有通过 我确实忘记发布错误...我在顶部添加了它 【参考方案1】:

由于您的results.html 中的&lt;a href="% url 'search:table_search' %"&gt;,您收到错误消息。像这样更改href

% for nm in name %
    <li><a href="/search/ nm.id /"> nm.name </a>  nm.date </li>
% endfor %

【讨论】:

以上是关于django在html之间传递变量的主要内容,如果未能解决你的问题,请参考以下文章

将HTML表单变量传递给Django中的python函数

Django:不能将变量传递给包含的模板?

Django - 将变量从函数视图传递到 html 模板

在django中将动态变量从父模板传递给子模板

如何将 Django 变量传递给 Javascript

Django 3:创建 CRUD 表模板(将上下文变量传递给 HTML)