#python #django
#python #django
Вопрос:
Я хочу добавить больше пробелов в __str__
метод, но метод обрезает пробелы до 1.
Например:
class Spam(models.Model):
foo = models.IntegerField()
bar = models.IntegerField()
def __str__(self):
return 'more spaces {} {}!'.format(self.foo, self.bar)
Этот вывод в Django admin:
more spaces 1 2
Я хочу : more spaces 1 2
Как это сделать?
Комментарии:
1. Пробелы есть, но веб-браузеры просто отображают любые пробелы в HTML как один пробел.
2. Пробелы, скорее всего, не отображаются вашим браузером. Именно так это определяет стандарт HTML.
Ответ №1:
Где когда-либо находится ваш str:
from django.utils import safestring
def __str__(self):
string = safestring.mark_safe("more spaces {}" "amp;nbsp;"*10 "{}!".format(self.foo, self.bar))
return string
Ответ №2:
Я не знаком с django, но вы действительно проверяете результаты на веб-странице.
Итак, полный ответ на ваш вопрос будет следующим: вы должны использовать специальные символы HTML для HTML-страницы, чтобы сделать отступ во второй части текста. Вы можете проверить специальные символы здесь: http://www.wikihow.com/Insert-Spaces-in-HTML
Чтобы использовать ‘amp; nbsp’, вы можете сделать:
def __str__(self):
space_sym = "amp;nbsp"*10 # hardcode magic-number of indent spaces
return 'more spaces {}{}{}!'.format(self.foo, space_sym, self.bar)
Комментарии:
1. Это частичный ответ: Django экранируется по умолчанию, поэтому вам нужно будет добавить
|safe
тег шаблона в шаблон, чтобы эти пробелы не экранировались
Ответ №3:
Если вы используете метод печати, он печатает нормально.
Я думаю, у вас проблема с html? Замените пробелы на amp;nbsp;
(но тогда это выглядит как дерьмо в оболочке) или попробуйте более явное представление в admin…
Или вы могли бы попробовать обернуть строку в <pre>
тег