2012-08-10 28 views
0

目前我有一个包含所有选项的下拉框。提交后按下时,页面的URL显示提交后突出显示的表单数据 - Django(和jQuery)

http://127.0.0.1:8000/website/?var1=choice1&var2=choice3

所以同样的观点重新加载重新加载所有选定变量和变量被收集和角度分析。根据选择,数据库中的不同数据会发送到此网页,从而在此下拉菜单下方加载不同的表格。

是否可以在刷新后在窗体中显示选定的数据?像这样: My current site

到目前为止,我只使用HTML。我想也许使用jQuery我能得到这个工作,但语言的困扰(虽然我很愿意学习,如果有人知道如何用jQuery做)

SOLUTION

下克里斯的指示,我设法使这个工作。 首先,Chris的解决方案没有用的是request.GET方法。因此,调用return render_to_response('website.html')的VIEW(所以相应的视图)里面,我加了下面的一段代码:

requestDict = request.GET 

return render_to_response('optionset.html', {'request':requestDict}) 

在我的模板,因此,我做了以下内容:

<form action="" name="OptionSetForm"> 
    <select name="var1" size=2> 
    <OPTGROUP LABEL="FirstPickHere"> 
      <option {% if request.var1 == "Choice1" %} selected="selected"{% endif %}>Choice1</option> 
      <option {% if request.var1 == "Choice2" %} selected="selected"{% endif %}>Choice2</option> 
      <option {% if request.var1 == "Choice3" %} selected="selected"{% endif %}>Choice3</option> 
    </OPTGROUP> 
    </select> 
</form> 

确保==和两个变量之间有空格。

回答

1

由于您使用的选择框,你就需要将以下添加到每个选项:

<option value="choice1"{% if request.GET.var1 == "choice1" %} selected="selected"{% endif %}>Choice 1</option> 

或者,如果你宁愿使用jQuery:

var queryString = window.location.search.substring(1); 
var params = queryString.split('&'); 
for (var i=0; i<params.length; i++) { 
    var param = params[i].split('='); 
    $('[name='+param[0]+']').val(param[1]) 
} 
+0

嗯......我试过了,但它似乎并没有工作。即使在我的表格外面执行'{%if request.GET.var1 ==“choice1”%} hey {%endif%}'也不会打印任何东西= /。在这两者之间,我宁愿使用你的第一个选项,因为我还不了解jQuery。 – SaiyanGirl 2012-08-10 21:31:50

+0

另外,我不知道它有多重要,但是我的下拉列表被加载为'{%for d in dim%} {%endfor%}'并且在执行代码行{ %if request.GET.var1 == {{d}}%}'我得到错误'无法解析余数:'== {{d}}'': – SaiyanGirl 2012-08-10 21:54:35

+0

您不使用'{{}} } {%%}'块内只有变量本身:'{%if request.GET.var1 == d%}' – 2012-08-13 14:29:35

1

您可以使用jQuery解析查询字符串中的变量(here's a library),然后按照here所述填充多选字段。

+0

好吧,我将阅读这些链接,看看我得到多远:) – SaiyanGirl 2012-08-10 21:15:28