Форум сайта python.su
-1
Есть модель:
from django import template
register = template.Library()
class Profile(models.Model):
@register.simple_tag
def profile_image(profile):
return "<a href="+profile.url()+"><img src="+profile.url_mini_foto()+' border="0" width="20" height="20"/></a>'
{{.profile_image|safe }}Офлайн
2
Возвращать из тега нужно сразу SafeString. Но лучше так не делать, это менее наглядно и не говорит о намерениях автору шаблона.
Офлайн
2
Ну и конечно тег как атрибут модели - это полный моветон.
Офлайн
-1
Daevaornну если на то пошло, тогда и get_absolute_url в модели тоже моветон. ;)
Ну и конечно тег как атрибут модели - это полный моветон.
Офлайн
2
EvgБррр… нет, нет и нет. Совершенно не так.
ну если на то пошло, тогда и get_absolute_url в модели тоже моветон. wink
зачем в модели информация о урлах и о шаблонах.
Офлайн
1
Поддерживаю.
Перетягивание отображения в модель - противоречит принципу MVC.
Офлайн
-1
Daevaorn- Не факт что для каждой модели урл нужен для каждой модели, могут быть модели для которых урл совершенно бесмыслен.
У объекта должен быть идентификатор и он этот идентификатор знать. Уж так сложилось, что для веб-приложений этот идентификатор - урл. Поэтому вполне естественно, что модель может если надо построить и вернуть свой урл-идентификатор.
DaevaornЧто значит он бесмысле как таковой? в контексте модели он имеет вполне определенный смысл - отобразить ее содержимое.
В то же время ваш “тег” мало того, что шаблонной, так ещё абсолютно бессмылен как таковой
Отредактировано (Июнь 11, 2009 20:17:21)
Офлайн
-1
Ferromanа я с этим и не спорю) просто это бывает удобно и все
Поддерживаю.
Перетягивание отображения в модель - противоречит принципу MVC.
Офлайн
2
EvgПри этом для других он нужен, а тут вы его просто не напишете. Обычное дело.
- Не факт что для каждой модели урл нужен для каждой модели, могут быть модели для которых урл совершенно бесмыслен.
EvgТут вы путает строку в базе данных и ресурс. Первое адресуется через id (причем это условно, если говорить про полную адресацию, то в ней еще и хост где БД, название самой БД и название таблицы), второе же через урл. Модель в большинстве случаев ресурс, поэтому знает как построить её идентификатор. А поскольку Джанга веб-фреймворк, то ресурсы именно через урлы адресуются, как бы вам это не нравилось.
в идеале мне кажется более правильным чтобы модель вообще не знала о урл, и о том как ее отображают, у нее есть идентификатор id и не нужно больше никаких к ней примешивать лишних данных - пусть модель просто хранит данные и все. Можно теоретически представить что модели нужно будет переиспользовать вообще не в вебе, к чему там урлы?
EvgСоздается впечатление, что вы сами не поняли, какой код вы написали.
Что значит он бесмысле как таковой? в контексте модели он имеет вполне определенный смысл - отобразить ее содержимое.
Офлайн
-1
EvgНапишу именно там если нужен) просто какой смысл иметь ссылки например на записи которые хранят записи о том голосвал юзер или нет, кто их будет просматривать по урлам - они нужны для внутреннего использования и все. какой смысл тут урлы имеют?
При этом для других он нужен, а тут вы его просто не напишете. Обычное дело.
DaevaornВообще я имел ввиду не то и не другое, я имел ввиду больше понятие сущности - а не то как она конкретно хранится в базе там или еще как, а именно сущность и ее идентифкатор относительно других сущностей. Кстати помоему джанговская модель это и подразумевает тк не разу не видел чтобы из модели можно было вытягивать информацию о базе. От модели можно узнать именно о сущности а не о деталях ее реализации.
Тут вы путает строку в базе данных и ресурс. Первое адресуется через id (причем это условно, если говорить про полную адресацию, то в ней еще и хост где БД, название самой БД и название таблицы)
DaevaornЧто за ресурс такой первый раз слышу)? дайте определение), обычно этот самый урл ведет на страницу в которой кроме html описания самой модели содержится еще куча всякой инфомрации - вся хтмл страница. И то что этот урл уж так сильо относится к модели это еще большой вопрос. В любом случае я не знаю какой смысл вкладывали авторы в модель поэтому спорить не буду) Но то что это противоречит принципу ортогональности и тут можно и нужно разделять помоему очевидно.
Модель в большинстве случаев ресурс, поэтому знает она знает как построить её идентификатор. А поскольку джанаг веб фреймворк, то ресурсы именно через урлы адресуются, как бы вам это нравилось.
DaevaornТак и есть)) сейчас понял что можно обойтись и без @register.simple_tag, а просто вернуть SafeString.
Создается впечатление, что вы сами не поняли, какой код вы написали.
Офлайн