由设计师设计的django前端定制(无需修改视图或表格)

时间:2015-05-25 17:33:52

标签: python django forms django-templates

我真的很喜欢我的前端同事处理CSS和其他前端事物 - 实际上,django的设计原则是这种分离,他们大多可以修改模板而不需要我更改代码。然而,似乎我可以找到修改表单的唯一方法是在后端(在视图,模型或表单中)。对于包提供的视图(例如,注册),它甚至更麻烦,因为这通常是对提供的python代码的唯一修改。

示例:在registration/login.html中(这是一个模板,所以我不介意提供我自己的)我有这个

<form method="post" action=".">
    {% csrf_token %}
    {{ form.errors }}<br>
    {{ form.username.errors }}
    <label for="{{ form.username.id_for_label }}"></label> {{ form.username }}<br>
    {{ form.password.errors }}
    <label for="{{ form.password.id_for_label }}"></label> {{ form.password }}
    <br>
    <input class="btn btn-success" type="submit" value="Me connecter" />
    <input type="hidden" name="next" value="{{ next }}" />
</form>

我真的很喜欢占位符文本(例如,密码字段中的浅灰色“密码”一词)。所以我发现自己制作了forms.py以便我可以写

password1 = forms.CharField(
    label=_("Password"),
    widget=forms.PasswordInput(attrs={'placeholder': 'password', ...

每当前端人员想要改变某种形式的东西时,这种情况就会不断重复,这是不可能的。

要清楚,我想更改模板以便我们拥有

{{ form.password.errors }}
<label for="{{ form.password.id_for_label }}"></label> {{ form.password }}

我们可以改为写一些只是html,css和表单变量的内容的东西。这样的事情(这是不对的):

{{ form.password.errors.text }}
<label for="{{ form.password.id_for_label }}"></label>
<input id="{{ form.password.id_for_label }}"
    name="{{ form.password.name }}"
    placeholder="password"
    type="password" />

也许这就是需要的变种,但后来我不明白为什么没有我见过的例子那样做。

我对django有什么遗漏,以便这些前端任务不需要后端干预?

1 个答案:

答案 0 :(得分:0)

在咨询了几位同事之后,最有可能做的就是这个

{{ form.password.errors }}
<label for="{{ form.password.id_for_label }}"></label>
<input id="{{ form.password.id_for_label }}"
   name="{{ form.password.name }}"
   placeholder="password"
   type="password" />

在允许django完成工作之间以及对包中的未来更改进行强健而需要对包用户进行大量修改之间存在合理的平衡。这是我们现在正在做的事情。

可以编写模板过滤器。对于我来说,本周活动的范围已经超出了范围,但如果能够写出这样的内容,那肯定会很有趣:

{{ form.password.errors }}
{{ form.password | attrs placeholder="password" }}