我必须根据用户选择使用新图片更新同一页面
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
我在这里做错了什么是处理它的最佳方法或者我应该更改网址模式?
答案 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更新表单的网址。