Текст заполнителя поля формы Django с использованием пользовательского тега шаблона - PullRequest
0 голосов
/ 01 июня 2018

Я везде искал простой способ добавить текстовый элемент placeholder в поле ввода формы Django.Существует несколько примеров , которые пытаются изменить формы модели или использовать надстройки .Я собрал несколько разрозненных примеров, чтобы получить следующее ...

Это мой первый шаблонный тег, и перед тем, как добавить много изменений, я хотел бы убедиться, что это правильно:

templatetags / placeholder.py

from django.template import Library
import re

register = Library()

def placeholder(value, token):
    value.field.widget.attrs["placeholder"] = token
    return value

register.filter(placeholder)

templates / my_app / customer_form.html (реализация Bootstrap)

<div class="container">
    <h5>Add a New Customer</h5>
    <form method="post">{% csrf_token %}
        <table class="table table-borderless table-sm table-half">
            <tr><td>{{ form.customer | placeholder:'Customer Name' }}</td></tr>
            <tr><td>{{ form.address1 | placeholder:'Address' }}</td></tr>
            <tr><td>{{ form.address2 | placeholder:'Address' }}</td></tr>
            <tr><td>{{ form.city | placeholder:'City' }}</td></tr>
            <tr><td>{{ form.state | placeholder:'State' }}</td></tr>
            <tr><td>{{ form.zip | placeholder:'Zip' }}</td></tr>
        </table>
        <input type="submit" class="btn btn-outline-primary" value="Add" />
    </form>
</div>

Firefox

enter image description here

Несколько вещей, которые я заметил:

a) Похоже, я могу (i) использовать теги полей в пользовательском теге и (ii) я могу использовать обычный текст.

b) Нет пробела между именем пользовательского тега и значением.Если есть пробел, он выбрасывает TemplateSyntaxError, что placeholder requires 2 arguments, 1 provided.(?)

Мой вопрос таков: все другие примеры SO используют field.widget.attrs в определениях класса __init__ формы (или в других местах в представлениях / моделях), а не через пользовательский тег -есть проблема дизайна с использованием пользовательского тега, это просто плохая форма или иное нормально?

1 Ответ

0 голосов
/ 10 июня 2018

Я теперь использовал как пользовательские теги шаблона, так и передавал предварительно отформатированные элементы контекста.Я пришел к выводу, что на этот вопрос нет ответа.

Если мне нужно написать код, проще написать его в определенном контексте, если он не повторяется, тогда либов качестве отдельного модуля или тега шаблона - либо имеет примерно одинаковые усилия (для меня).

Импортируемые пользовательские теги шаблонов имеют преимущество, если они уже записаны и могут быть импортированы, например {% load humanize%} .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...