在djang上获得js

2024-04-19 08:08:53 发布

您现在位置:Python中文网/ 问答频道 /正文

有html这个3 droplist\2按钮,js send GET带有3个变量mar,yer,kpp

  function validate() {
     var mar = document.forms.form_id.m.value;
     var yer = document.forms.form_id.y.value;
     var kpp = document.forms.form_id.k.value;

     return mar, yer, kpp;
    }
    </script>


    <body style="background: transparent; border: none;">
    <form action="/search/" method="get" id="form_id" type="submit" onSubmit="return validate();">
    <table>
    <tr>
    <td style="text-align:center">
    <br>
        <select id="m">
            <option value="">Марка</option>
            {% for article in articles %}
                <option value="{{ article }}">{{ article }}</option>
            {% endfor %}
        </select>
    </td>
    <td style="text-align:center">
    <br>
        <select id="y">
            <option value="">Год выпуска</option>
            <option value="2016">2016</option>

        </select>
    </td>
    <td style="text-align:center">
    <br>
        <select id="k">
            <option value="">Коробка передач</option>
            <option value="mt">Механика</option>

        </select>
    </td>
    </tr>
    <tr>
    <td colspan="3" style="text-align:center">
      <input type="submit"  value="Отправить">
      <input type="reset"  value="Очистить">
    </td>
    </tr>
    </table>
    </form>
    </body>

和def

def search(request):
 if 'mar' in request.GET and request.GET['mar']:
    q = request.GET['mar']
    list = AutoParsingMan.objects.filter(marka=q)
    return render_to_response('Mysitez/seach.html',
        {'list': list, 'querty': q})
 else:
    return HttpResponse('Please submit a search term.')

为什么不使用这个1变量?(mar)如何为3个变量创建def?(3月,年,kpp)

你知道吗型号.py你知道吗

class AutoParsingMan(models.Model):
 date_ins = models.DateTimeField()
 date_change = models.DateTimeField()
 change = models.CharField(max_length=15)
 date = models.DateTimeField()
 date_task = models.DateField()
 marka = models.CharField(max_length=50)
 year = models.IntegerField()
 kpp = models.CharField(max_length=50)

 class Meta:
    managed = False
    db_table = 'auto_parsing_man'

 def __str__(self):
    return self.marka, self.year, self.kpp

error it-MultiValueDictKeyError at/search/“'mar'”

 def search(request):
if 'mar' in request.GET and request.GET['mar'] and request.GET['year'] and request.GET['kpp']:
    q = request.GET['mar']
    y = request.GET['year']
    k = request.GET['kpp']
    list = AutoParsingMan.objects.filter(marka=q, year=y, kpp=k)
    return render_to_response('Mysitez/seach.html',
        {'list': list, 'querty': q})
else:
    return HttpResponse('Please submit a search term.')

Tags: formidsearchgetreturnvaluestylemodels
1条回答
网友
1楼 · 发布于 2024-04-19 08:08:53

首先,塞尔库克是对的,你应该把你的问题建立得更好。问题应尽可能客观,你的问题相当含糊。不过,我知道你的问题在哪里。你知道吗

你把JavaScript和HTML表单搞混了。它们是两个独立的规范,旨在相互独立。在构建JavaScript支持的表单之前,您应该首先用纯HTML构建表单,一旦成功,您应该在表单之上添加JavaScript。你知道吗

对于您手头的问题,您使用了mar名称作为JavaScript变量名,它永远不会由HTML表单发送,因为HTML表单不知道JavaScript变量。相反,您应该在select标记上使用name=参数,如下所示:

<br>
    <select id="m" name="mar">
        <option value="">Марка</option>
        {% for article in articles %}
            <option value="{{ article }}">{{ article }}</option>
        {% endfor %}
    </select>
</td>
<td style="text-align:center">
<br>
    <select id="y" name="yer">
        <option value="">Год выпуска</option>
        <option value="2016">2016</option>

    </select>
</td>
<td style="text-align:center">
<br>
    <select id="k" name="kpp">
        <option value="">Коробка передач</option>
        <option value="mt">Механика</option>

    </select>
</td>

HTML表单将发送mar变量,其中包含从下拉列表中选择的任何文章的选项。你知道吗


注意

这种代码风格对于学习django和/或web开发一般来说是可以的,但是在现实世界中,您应该将表单的构造委托给django,在一个通常称为forms.py的文件中。Django有一个表单引擎,它提供了比在模板中硬编码表单更好的兼容性。你知道吗

相关问题 更多 >