如何从 URL 标签调用 Django 表单字段?
我有一个表单,用来获取字段值并进行搜索。我的想法是通过 Django 的“漂亮”网址方式来调用模板:
mypage.com/search_results/hola
问题是我还不知道怎么把表单字段作为参数传递到网址模板里。
Forms.py
class SearchForm(forms.Form):
place_display = forms.CharField(max_length=100, help_text='Donde Quieres Ir')
views.py
def search_results(request,place):
..
urls.py
urlpatterns = patterns('',
url(r'^search_results/(?P<place>\d+)/$', views.search_results, name='search_results'),
..
如果我在使用模板,我应该如何从网址标签调用呢:
<form class="form-horizontal" action="{% url 'search_results' %}" role="form" method="get">
<div class="form-group">
<div class="col-lg-5">
<label>Lugar</label>
{{ form.place_display|add_class:"form-control"}}
{{ form.place_type }}
{{ form.place_id }}
</div>
</div>
<div class="controls form-inline">
<div class="form-group">
<div class="col-lg-2">
<label>Entrada</label>
{{ form.fromdate|add_class:"form-control"}}
</div>
</div>
<div class="form-group">
<div class="col-lg-2">
<label>Salida</label>
{{ form.todate|add_class:"form-control"}}
</div>
</div>
</div>
<br />
<button type="submit" class="btn btn-default">Buscar</button>
我尝试了不同的方法:
action="{% url 'search_results' form.place_display %}"
action="{% url 'search_results' {{form.place_display}} %}"
action="{% url 'search_results' place=form.place_display %}"
etc,etc,etc
1 个回答
0
在表单中把 action=''
去掉,然后把重定向的操作放在你的视图里面;)
下面是你的 视图 可能的样子:
def search_results(request, place):
if request.method == 'POST':
place = request.POST.get('place_display','')
# place_display is the parameter you want,
# And '' is the default value if place_display isn't found.
### The following return is the thing you want to do, but it is unnatural.
### You can't have an HTML page for any query term a user may search.
### What does the 'place' query should actualy do for you?
return render(request, 'search_results/place', {})
与其这样返回,不如你真正想做的是下面这个:
return render(request, 'search_results.html', {place: 'place'})