根据下拉选项无法更新同一页面

时间:2014-05-21 14:24:13

标签: javascript python ajax django

我必须根据用户选择使用新图片更新同一页面

views.py

def search_form(request,xid):
print xid
if request.GET.get('search'):
    search = request.GET.get('search')
    print "in search"
    print search
    xid = search
    return render(request,'search_form.html',{'xid':xid})    
else:
    return render(request,'search_form.html',{'xid':xid})    

def temp(request,xid):    
    """ forming chart image using matplotlib"""
  

urls.py

  urlpatterns = patterns('',
  url(r'^temp/(?P<xid>\d{4})/$', views.temp, name='temp'),
  url(r'^search_form/(?P<xid>\d{4})/$', views.search_form, name='search_form'),)
  

模板search_form.html

<html>
<head>
<title>Search</title>
</head>
<body>
    <form method="get">
        <select name=search>
        <option value="1234">1234</option>
        <option value="7426">7426</option>
        </select>
        <input type="submit" value="Search">
    </form>
    <div id="content">
        {% block content %}
        <img src='/temp/{{ xid }}'>
        {% endblock %}
    </div>
</body>
</html>

我的问题是,当我从下拉列表中选择选项时,它正在寻找类似的网址 得到 下面(这里我正在查看1234的图像)并尝试从下拉菜单中选择7426后尝试新的,但是网址形成如下,页面未更新,如下面的网址形成。

  

/ search_form / 1234 /?搜索= 7426

但我需要它应该形成类似

的东西
/search_form/7426

我在这里做错了什么是处理它的最佳方法或者我应该更改网址模式?

2 个答案:

答案 0 :(得分:1)

您的form没有action属性,因此GET将定向到当前网址,即/search_form/1234/。如果要将其定向到其他网址,请添加action属性。例如

 <form method="get" action="/search_form/">

如果选择了/search_form/?search=7426,这将产生网址7426。您还需要修改视图:

def search_form(request, xid=None):
    # Same here

如果您不想硬编码/search_form/,可以在模式中添加另一个命名网址,例如

url(r'^search_form/$', views.search_form, name='base_search_form')

<form method="get" action="{% url 'base_search_form' %}">

答案 1 :(得分:0)

您必须根据用户的选择使用javascript更新表单的网址。