ine*_*ine 16 django django-templates django-forms
是否有一种简单的方法可以将Django渲染{{myform.name}}为
John Smith
Run Code Online (Sandbox Code Playgroud)
代替
<input id="id_name" name="name" value="John Smith" />
Run Code Online (Sandbox Code Playgroud)
里面的<form>标签?或者我是以错误的方式来做这件事的?
tef*_*ozi 22
<form>
{% for field in form %}
{{ field.label }}: {{ field.value }}
{% endfor %}
</form>
Run Code Online (Sandbox Code Playgroud)
cai*_*aio 14
老话题,但我觉得有些人还来这里.
你也可以这样做:
from django.utils.safestring import mark_safe
class PlainTextWidget(forms.Widget):
def render(self, _name, value, _attrs):
return mark_safe(value) if value is not None else '-'
Run Code Online (Sandbox Code Playgroud)
在你的形式
class SomeForm(Form):
somename = forms.CharField(widget=PlainTextWidget)
Run Code Online (Sandbox Code Playgroud)
您还可以使用一个新的小部件:我这样做是为了我可以有一个小部件来创建日期的文本显示,以及一个包含相同日期的隐藏表单,因此用户可以看到它,但他们不能更改。
这是一个初始(仍在测试/有待清理)版本:
class DayLabelWidget(forms.Widget):
def render(self, name, value, attrs):
final_attrs = self.build_attrs(attrs, name=name)
if hasattr(self, 'initial'):
value = self.initial
if type(value) == type(u''):
value = datetime.date(*map(int, value.split('-')))
return mark_safe(
"%s" % value.strftime("%A (%d %b %Y)")
) + mark_safe(
"<input type='hidden' name='%s' value='%s' />" % (
name, value
)
)
def _has_changed(self, initial, data):
return False
Run Code Online (Sandbox Code Playgroud)
然后,您可以在该字段中将其用作(widget=DayLabelWidget,).
| 归档时间: |
|
| 查看次数: |
14955 次 |
| 最近记录: |