Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Оптимизация urlpatterns. Возврат в случае ошибки [RSS Feed]

#1 Май 22, 2011 18:00:45

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация urlpatterns. Возврат в случае ошибки

Добрый вечер. Сложилась нехорошая ситуация, читаю доки. Не совсем понятно, как быть
В данный момент использую в url функцию (или метод?) direct_to_template

url(r'^(?P<id>[-\w]+)/$', direct_to_template,
kwargs={
'template': 'detail.html',
'extra_context': {'post': lambda: Post.objects.get(id=id)}
},
name='detail'),
Возникает такая проблема. Что делать, если не находит ничего? Возникает что-то вроде ошибки Post.DoesNotExist?
Если переносить в файл views.py то все понятно (return <какое-то действие другое>). Но хочется узнать, разве нет способа запихнуть такую обработку в urls.py?



Офлайн

#2 Май 23, 2011 10:51:55

Yurietc
От:
Зарегистрирован: 2007-07-18
Сообщения: 112
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация urlpatterns. Возврат в случае ошибки

В таких случаях лучше использовать django.views.generic.list_detail.object_detail вместо direct_to_template:

url(r'^(?P<object_id>[-\w]+)/$',
'django.views.generic.list_detail.object_detail',
{
'queryset': Post.objects.all(),
'template_name': 'detail.html',
'template_object_name': 'post',
},
name='detail')
если такого поста не существует, 404 ошибка будет генерироваться автоматически.



Отредактировано (Май 23, 2011 10:57:33)

Офлайн

#3 Май 23, 2011 12:04:32

dissdoc
От:
Зарегистрирован: 2009-12-12
Сообщения: 273
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация urlpatterns. Возврат в случае ошибки

Да, это я знаю.
Но я вчера уже доки почитал, проще конечно же свои вьюхи делать.
Потому что мне не всегда нужно выходить на 404 ошибку
Бывает нужно специально как-то обработать



Офлайн

  • Начало
  • » Django
  • » Оптимизация urlpatterns. Возврат в случае ошибки[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version