我对Django和网络开发都很陌生,所以我仍然试图概念化很多这些想法。
我很难理解如何在点击"提交"以及如何正确处理HTML表单操作属性。按钮,基于我设置的选择/下拉框中选择的内容。
例如,如果用户要在下拉框中选择汽车(或下面的示例中的修剪),然后单击“转到”按钮,我希望然后将用户发送到包含汽车信息的新页面修剪。这就是我所拥有的:
模板
<!-- Bar of dropdowns for searching. -->
<div class="container-fluid">
<form action="" method="get" class="form-inline" id="dropdownText">
<div class="form-group" id="dropdownGroup">
<span style="display:inline-block" class="selectBox">
<select class="form-control" id="make">
<option value='empty'></option>
<!-- List each make's name. -->
{% for make in allMakes %}
<option value="{{ make.id }}">{{ make.name }}</option>
{% endfor %}
</select>
<label for="make" style="display:block">Make</label>
</span>
<span style="display:inline-block" class="selectBox">
<select class="form-control" id="model" disabled>
<!-- List each make's model's name. -->
</select>
<label for="model" style="display:block">Model</label>
</span>
<span style="display:inline-block" class="selectBox">
<select class="form-control" id="trim" disabled>
<!-- List all trims for each make/model. -->
</select>
<label for="trim" style="display:block">Trim</label>
</span>
</div>
</form>
<form action="" id="trimDetail">
<div class="text-center">
<button type="submit" class="btn btn-default" id="go">GO!</button>
</div>
</form>
</div>
&#13;
看起来像什么
http://puu.sh/phaHG/105ed07b28.png
用于汽车修剪的DetailView
class DetailView(generic.DetailView):
model = Trim
template_name = 'search/detail.html'
与视图对应的网址
url(r'^(?P<pk>\d+)/$', DetailView.as_view(model=Trim,
template_name='search/detail.html')),
选择修剪并单击“开始”后,只需刷新页面,并将网址更改为:
&#34; / trimId = 4&#34?;
,trimId根据用户选择的内容而改变,但不会将它们发送到将显示id信息的模板。
我可以通过单击按钮更改使用jQuery的表单操作来完成这项工作,但我不确定这是不好的做法,我想学习正确的Django方法。
我的jQuery方式:
var $elTrim = $('select#trim'); // The trim select box.
var $trimForm = $('form#trimDetail'); // The form around the button.
function updateAction(){
if($elTrim.find('option:selected').val() != 'empty'){
$trimForm.attr('action', $elTrim.val());
}
}
$elTrim.change(updateAction);
答案 0 :(得分:0)
这不是一个很好的方法。您的搜索页面应始终提交到同一个地方;然后,该页面可以负责直接显示结果,或者将您重定向到相关的页面。