Django根据所选内容提交表单操作

时间:2016-06-05 01:12:12

标签: jquery html django

我对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;
&#13;
&#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);

1 个答案:

答案 0 :(得分:0)

这不是一个很好的方法。您的搜索页面应始终提交到同一个地方;然后,该页面可以负责直接显示结果,或者将您重定向到相关的页面。