Я пишу приложение в Django, которое использует [year]/[month]/[title-text]
в URL-адресе для идентификации новостей. Для управления элементами я определил несколько URL-адресов, каждый из которых начинается с вышеуказанного префикса.Как написать фильтр запроса/препроцессор в Django
urlpatterns = patterns('msite.views',
(r'^(?P<year>[\d]{4})/(?P<month>[\d]{1,2})/(?P<slug>[\w]+)/edit/$', 'edit'),
(r'^(?P<year>[\d]{4})/(?P<month>[\d]{1,2})/(?P<slug>[\w]+)/$', 'show'),
(r'^(?P<year>[\d]{4})/(?P<month>[\d]{1,2})/(?P<slug>[\w]+)/save$', 'save'),
)
мне было интересно, если есть механизм в Django, который позволяет мне предобработку данного запроса взглядам edit
, show
и save
. Он может анализировать параметры, например. year=2010, month=11, slug='this-is-a-title'
и извлечь из них объект модели.
Выгода бы, что я мог бы определить свою точку зрения, как
def show(news_item):
'''does some stuff with the news item, doesn't have to care
about how to extract the item from request data'''
...
вместо
def show(year, month, slug):
'''extract the model instance manually inside this method'''
...
Что такое Джанго способ решения этого? Или в более общем виде существует ли механизм для реализации фильтров запросов/препроцессоров, таких как JavaEE и Ruby on Rails?
У меня есть еще много читать, пока я не получу это полностью. Фильтр, похоже, не такой тривиальный в джанго. – nre
Фильтр для фильтрации объектов, как в Model.objects.filter()? –
Довольно уверен, что он говорит о методе, который фильтрует (предварительно обрабатывает) запрос до его отправки фактическому обработчику запросов. Синонимичным в Java/Spring будет Interceptor ... в Rails это будет before_filter. – threejeez