gpt4 book ai didi

jquery - 使用jquery列出django相关的下拉值

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:12 24 4
gpt4 key购买 nike

我想在 django 中使用 jquery 显示相关的下拉值。我的第一个下拉列表有 python、ruby 和 php 等语言。第二个下拉列表包含与语言相关的框架。对于 python,框架有 django、pylons、grok。对于 ruby​​,框架是 Rails、Cuba。对于php,框架是cakephp、codeignator...我写了3个表,分别命名为语言、框架和网站。

模型.py

class languages(models.Model):
lname=models.CharField(max_length=10)
def __unicode__(self):
return self.lname

class framework(models.Model):
fname=models.CharField(max_length=25)
lang=models.ForeignKey(languages)
def __unicode__(self):
return self.fname

class website(models.Model):
wname=models.CharField(max_length=30)
framewrk=models.ForeignKey(framework)
def __unicode__(self):
return self.wname

View .py

def lang_fun(request):
if request.method=='POST':
l=request.POST.get('l1')
languages(lname=l).save()
return HttpResponseRedirect('/frame_fun')
else:
return render(request,"languages.html")
def frame_fun(request):
if request.method=='POST':
la=request.POST.get('drop1')
f=request.POST.get('f1')
framework(lang_id=la,fname=f).save()
return HttpResponseRedirect('/web_fun')
else:
stl=languages.objects.all()
return render(request,"framework.html",{'stl':stl})
def web_fun(request):
if request.method=='POST':
fr=request.POST.get('drop2')
w=request.POST.get('w1')
website(framewrk_id=fr,wname=w).save()
return HttpResponseRedirect('/display')
else:
stl=framework.objects.all()
return render(request,"website.html",{'stl':stl})
def display(request):
s1=languages.objects.all()
s=website.objects.all()
return render(request,"display.html",{'s':s,'s1':s1})

显示.html

<html>
<head>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('#drop1').on('change', function() {
$('#text1').val($('#drop1').val());

});
});
</script>
</head>
<body>
<table id="tab1" border="1px">
<tr><th>language</th><th>framework</th><th>website</th></tr>
{% for i in s %}
<tr><td> {{i.framewrk.lang.lname}}</td>
<td>{{i.framewrk.fname}}</td>
<td>{{i.wname}}</td>
</tr>
{% endfor %}
</table>
<select id="drop1">
{% for i in s %}
<option value={{i.framewrk.fname}}>{{i.framewrk.lang.lname}}</option>
{% endfor %}
<input type="text" id="text1">
</body>
</html>

在我的views.py中,我添加了语言的框架和网站。在我的display.html中,我显示了相应语言的框架和网站。我正在访问下拉列表中的语言,语言的重复取决于它包含的框架的数量。我想要它而不重复。我可以在文本框中一一显示语言的框架。我希望它在 dropdon 中。当我选择 python 时,我希望 python 的框架显示在另一个下拉列表中。你能帮我如何编写 html 和 jquery 吗?提前致谢。正在学习Python。所以请指导我。

最佳答案

这是相对简单的任务,但我想说,您尝试使用自己的工具做太多事情,而不是使用 django 提供的最佳方法。将所有这些作为示例写出来需要花费太多时间,因此我将概述为实现相同目标我会做的事情。

1) 使用 django 表单来显示表单并保存/处理模型数据。您可以为不同的选择框创建具有不同字段的单个表单。您将需要条件字段,因为一个字段中的选择取决于另一字段中的选择。请参阅这篇关于使用条件形式的文章:( link )。在您的情况下,您需要执行一些操作,例如在表单 init 方法中访问表单绑定(bind)数据并从中读取选定的语言/框架值,然后根据这些值设置框架/网站选择。

2) 字段更改事件是在发生更改时刷新表单内容的好方法。但不要发布该表格。您可以在同一地址上执行 GET 表单。

3) 在 View 中,您可以将 request.POST 或 request.GET 作为初始参数传递给表单类。在这两种情况下,这都将成为表单的绑定(bind)数据 - 您将在表单的 init 方法中使用该数据来确定可用的选择。

4)如果是request.GET,只需再次返回相同的表单即可。您可以返回刚刚渲染的表单元素,并且在网页上您可以使用该渲染的 html 来交换现有的表单。不要忘记使用 jquery.live 方法将“change”事件绑定(bind)到表单字段,否则交换表单后事件将无法工作。

5) 仅在实际发布表单时才使用 POST。

这会给你带来什么:

1) 您将仅使用一个 View 而不是 4 个。所有这些都可以在一个相对简单的 View 中完成。

2)与字段值/选择相关的所有逻辑都将位于表单类中,在我看来,这是最好的地方。

3)您将学习使用 OOP,如果您打算坚持使用 Django,这将使您受益匪浅。

4)作为旁注,你应该看看这个:link

艾伦

关于jquery - 使用jquery列出django相关的下拉值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19922075/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com