Как я могу отобразить строки с определенными символами в качестве значения входного тега? - PullRequest
0 голосов
/ 18 февраля 2019

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

<input id={{"category"|add:escaped_cat_name}} type="checkbox" name="category" value={{category_name}}>

Некоторые из названий моей категории содержат пробелы и амперсанды, но Django игнорирует их, поэтому «Fun & Gaming» становится «Fun»:

category_name: Fun & Gaming
<input id="categoryFun" type="checkbox name="category" value="Fun">

category_name: Business Expenses
<input id="categoryBusiness" type="checkbox name="category" value="Business">

В этихВ качестве примера я хотел бы, чтобы интерпретированный value прочитал 'Fun & Gaming and 'Business Expenses

. Если я добавлю к значению тег safe, он отобразит имя значения как "Fun" и игра, свторая часть строки все еще находится за пределами имени значения.

Я пытался написать собственный тег, чтобы справиться с этим поведением, но кажется, что это Django по умолчанию, и я не могу понять, как его отключить..

Любая помощь с этим будет очень признательна.

1 Ответ

0 голосов
/ 18 февраля 2019

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

Обработка и обработкавходные данные вручную - это анти-паттерн.Правильный способ - создать объект Форма и отобразить форму в шаблоне.

Вы можете узнать о формах в Работа с документацией форм djag .

Позвольте мне скопировать здесь образец для флажка s:

from django import forms

BIRTH_YEAR_CHOICES = ('1980', '1981', '1982')
FAVORITE_COLORS_CHOICES = (
    ('blue', 'Blue'),
    ('green', 'Green'),
    ('black', 'Black'),
)

class SimpleForm(forms.Form):
    birth_year = forms.DateField(
           widget=forms.SelectDateWidget(years=BIRTH_YEAR_CHOICES))
    favorite_colors = forms.MultipleChoiceField(
        required=False,
        widget=forms.CheckboxSelectMultiple,
        choices=FAVORITE_COLORS_CHOICES,
    )

Итак, нам не нужно заново изобретать колесо и просто использовать формы.

Для ваших данных:

>>> FAVORITE_COLORS_CHOICES = (
...     ('categoryFun', 'Fun & Gaming'),
...     ('categoryBusiness', 'Business Expenses'),
... )
>>> 
>>> class SimpleForm(forms.Form):
...     favorite_colors = forms.MultipleChoiceField(
...         required=False,
...         widget=forms.CheckboxSelectMultiple,
...         choices=FAVORITE_COLORS_CHOICES,
...     )
... 
>>> str( SimpleForm() )
'<tr><th><label>Favorite colors:</label></th>
<td>
  <ul id="id_favorite_colors">
  <li> 
    <label for="id_favorite_colors_0">
      <input type="checkbox" name="favorite_colors" 
             value="categoryFun" id="id_favorite_colors_0" />
        Fun &amp; Gaming
    </label>
  </li>...'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...