2016-07-27 33 views
-4

views.py期待在搜索框输入的文本要在搜索结果页

from weatherbot.models import Question 
    from django.template import RequestContext 
    from django.shortcuts import render_to_response 

    def search(request): 
     query = request.GET.get('q') 
     if query: 
      results = query 
     context = RequestContext(request) 
     return render_to_response('results.html', {"results": results,}, context_instance=context) 

urls.py

from django.conf.urls import url 
    from . import views 

    urlpatterns = [ 
url(r'^search/$', views.search, name = 'Ask for Weather Updates'),] 

search.html

<form method="get" action="/search/"> 
    Search Notecards:<input type="text" name="q" id="id_q" value="{{ query }}"/> 
    <input type="submit" value="Search" /> 
    </form> 

result.html印刷

{% if results %} 
     {% for result in results %} 
     {{ result.xxxx }} 
     {% endfor %} 
    {% else %} 
    <h3 class='error'>Please enter a valid UID</h3> 
    <form method="get" action="//"> 
    Search Notecards:<input type="text" name="q" id="id_q" value="{{ query }}"/> 
    <input type="submit" value="Search" /> 
    </form> 
    {% endif %} 

我所试图做的是在搜索框先输入一个问题,然后使用Django

+1

请在此处发布您的代码,而不是链接到粘贴bin,修复缩进,并更详细地解释您希望发生的事情以及实际发生的情况。 – Alasdair

回答

0

您认为在结果页面显示出来,results是一个字符串,所以{% for result in results %}将遍历字符串中的每个字母,并且{{ result.xxxx }}将不会显示任何内容,因为字符串没有xxxx属性。

我会简单地替换模板循环:

{{ results }} 

您可以简化使用render,而不是render_to_response视图。由于您有if query,因此您还必须在else声明中设置query,否则会出现名称错误。

from django.shortcuts import render 

def search(request): 
    query = request.GET.get('q') 
    if query: 
     results = query 
    else: 
     results = '' 
    return render_to_response(request, 'results.html', {"results": results,}) 

您可能会发现Mastering Django的forms chapter有用。

+0

感谢您的答案和链接! – Krishna