Django注册Redux自定义

时间:2016-04-02 08:57:26

标签: css django django-forms

我一直试图对此做出明确而简单的回答,但我似乎无法从文档或堆栈溢出中提取任何有意义的内容。

我已经实现了Django Registration Redux附带的标准模板,但我似乎无法解决如何更改Redux中默认设置的表单样式和文本副本。

这是我的HTML:

{% extends 'base.html' %}
{% block title %}
    Registration Form - {{ block.super }}
{% endblock title %}
{% block content %}
<div class="content-wrapper">
    <div class="content">
        <div class="pure-g">
            <div class="is-center pure-u-1">
                <div class="pure-u-1-2 thin-box">
                    <h1>Registration form</h1>
                    <form role="form" action="" method="post">
                        {% csrf_token %}
                        {{ form.as_p }}
                        <input type="submit" value="Submit" class="s-button"/>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
{% endblock content %}

正如您所看到的,我已经设置了按钮的样式,但没有任何元素可用于样式。 redux数据必须位于某处,但我不知道它在哪里。

SO上有人建议使用crispy表单,但我使用的是pureCSS而不是bootstrap,而且我已经设置了一套我想要使用的表单样式,所以安装具有一组样式的模块似乎有些过分,然后我必须重写。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以访问各个字段。要访问它们,您可以获取字段的名称here

因此,在模板而不是{{form.as_p}}中,您可以使用以下单个字段:

例如{{form.username}}。

如果您还想添加样式,则需要使用以下过滤器: {{form.username | add_some_css:“my_new_class”}}。需要在单独的文件中配置此样式,例如redux_css.py。要使您的模板使用此文件,您需要在{%extends'base.html'%}之后包含以下{%load redux_css%}。

现在你需要创建redux_css.py:

from django import template

register = template.Library()

@register.filter
def add_some_css(field, css):
    """
    Adds css to fields in Redux templates
    """
    return field.as_widget(attrs={"class":css})

所有这些都应该使你的redux字段(文本输入)的样式如下:class =“my_new_class”

显然你需要创建.css文件并将它们“导入”你的.html文件。

PS您可能还需要访问字段错误,您可以使用{{form.username.erros}}

执行此操作