【问题标题】:django queryset and templatesdjango 查询集和模板
【发布时间】:2012-02-11 17:53:17
【问题描述】:

我是 django 的新手,我已经使用表单构建了一个小页面。 当我转到模板并使用模板标签时,例如:

{{form.q}}

一切都很好,我看到了表单输入字段。但是,我不太喜欢它提供的输入“框”,我想覆盖此功能。

所以,在我的 HTML 中,我会有类似的内容:

<input id="customfield" name="q" type="text"/>

我尝试了上述方法,似乎一切正常。但是,如果我使用例如:

<input id="customfield" name="{{form.q}}" type="text"/>

它确实有效。所以,我的问题是:

[1] 是否可以使用 name="q" 或者如果我有自定义输入,如何指定 {{form.q}}? [2] 与简单地使用 {{form.q}} 相比,使用 name="q" 是否有任何缺点(如 sql 注入)?

抱歉,有 101 个问题!

【问题讨论】:

  • 什么是form,q是什么类型的字段?
  • It (q) 是输入搜索字段。
  • 你想定制什么?
  • 我正在尝试自定义搜索框的外观。所以,我有一个相同的 CSS 元素,我想包含它。

标签: django django-forms django-templates


【解决方案1】:

如果您想在模板中进行如此多的控制,这正是您构建表单的方式。

当其他 django 快捷方式失败时,您将学习本课程,例如 widgets 中的一个构建决定了您的字段的呈现方式。

更新:阅读您的评论后,如果您只想将属性注入input 元素,您可以向小部件传递一个包含attribute:value 对的字典。

q = forms.CharField(widget=forms.TextInput(attrs={'class': 'foobar'}))

SQL 注入在这里无关紧要(当用户与在您的服务器上编写的 SQL 有关时,您会担心这一点)并且没有缺点,除了代码更难编写和维护。

【讨论】:

  • 非常感谢您对宇治的评论。您的意思是可以安全地进行以下操作:
  • @JamesW,当然!您认为 {{ form.q }} 最终呈现为什么? :) 浏览器是 django 自动生成它还是你从头开始编写它是没有区别的。
  • 再次感谢宇治。实际上,我确实更喜欢使用 name="q",因为它让我可以更好地控制包括 js 和其他非 django 小部件。
猜你喜欢
  • 2018-12-20
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 2023-04-11
  • 2023-04-09
  • 1970-01-01
  • 2015-09-03
  • 2016-04-17
相关资源
最近更新 更多