2017-09-26 84 views
1

嗨,我想創建一個搜索引擎,我需要使表ID保持鏈接。Django傳輸變量之間的HTML

在我的CrawledTables中有所有帶有ID的表...我需要通過鏈接將該ID傳遞到變量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 %} 
+0

你的問題是什麼? –

+0

* pk *未通過 – Omega

+0

我忘了發佈錯誤...我將它添加到頂部 – Omega

回答

1

由於您的results.html中的<a href="{% url 'search:table_search' %}">錯誤,您將收到錯誤消息。像這樣改變href

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