J'écris une application dans Django, qui utilise [year]/[month]/[title-text]
dans l'URL pour identifier les nouvelles. Pour gérer les éléments, j'ai défini un certain nombre d'URL, chacune commençant par le préfixe ci-dessus.Comment écrire une demande filtre/préprocesseur dans 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'),
)
Je me demandais s'il existe un mécanisme de Django, ce qui me permet de prétraiter une requête donnée aux vues edit
, show
et save
. Il pourrait analyser les paramètres, par ex. year=2010, month=11, slug='this-is-a-title'
et en extrayez un objet modèle.
L'avantage serait que je pourrais définir mon point de vue que
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'''
...
au lieu de
def show(year, month, slug):
'''extract the model instance manually inside this method'''
...
Quelle est la façon de résoudre ce Django? Ou d'une manière plus générique, existe-t-il un mécanisme pour implémenter des filtres/préprocesseurs de requêtes tels que JavaEE et Ruby on Rails?
J'ai encore beaucoup à lire, jusqu'à ce que je reçois ce complètement. Un filtre ne semble pas si trivial dans django. – nre
Filtre pour filtrer les objets comme dans Model.objects.filter()? –
Bien sûr, il parle d'une méthode qui filtre (prétraiter) une requête avant qu'elle ne soit envoyée au gestionnaire de requêtes réel. Synonyme de Java/Spring serait un Interceptor ... dans Rails ce serait before_filter. – threejeez