Vous n'êtes pas identifié(e).
Hello,
Je bloque sur des petits trucs qui comment à me gonfler et me bloquent
inutilement, j'en appelle donc à vos lumières ô grands maitres de
python/django.
1er problème, j'ai dans mon urlconf :
(r'^post/(?P<slug>\w+)$', 'object_detail', dict(queryset= Post.objects.all()
, slug_field= 'url',extra_context={'all_tags': Tag.objects.all(),
'all_categories': Category.objects.all(), } )),
Si mon slugfield vaut billet1, ça fonctionne, ma page est affichée. Si j'ai
billet-1 ça marche plus. Une idée ? J'avoue que les regexp et moi on n'est
pas bon copain :-(
2eme question, je cherche à filtrer selon un argument avec les vues
génériques et je bloque dans la syntaxe. (et je m'y prends peut être mal)
Ex :
(r'^tag/(?P<slug>\w+)/$', 'object_list', dict(queryset=
Post.objects.filter(pk='slug_field')
, slug_field= 'url', extra_context={'all_tags': Tag.objects.all(),
'all_categories': Category.objects.all(), } )),
L'idée serait de sortir tous les posts ayant le tag correspondant à mon
slugfield.
Pour le moment, grand néophyte de python/django, j'avoue aussi y perdre mon
latin dans les tuples / listes / dictionnaires (finalement les tableaux en
php, c'était peut être pas si mal que ça :-P )
Merci d'avance pour vos lumières,
Nico
Hors ligne
2006/12/20, Nicolas Steinmetz <nsteinmetz _AT_ gmail.com>:
> Hello,
>
> Je bloque sur des petits trucs qui comment à me gonfler et me bloquent
> inutilement, j'en appelle donc à vos lumières ô grands maitres de
> python/django.
>
> 1er problème, j'ai dans mon urlconf :
>
> (r'^post/(?P<slug>\w+)$', 'object_detail', dict(queryset= Post.objects.all()
> , slug_field= 'url',extra_context={'all_tags':
> Tag.objects.all(), 'all_categories': Category.objects.all (), } )),
>
> Si mon slugfield vaut billet1, ça fonctionne, ma page est affichée. Si j'ai
> billet-1 ça marche plus. Une idée ? J'avoue que les regexp et moi on n'est
> pas bon copain :-(
Quid de (?P<slug>[-\w]+) ?
>
> 2eme question, je cherche à filtrer selon un argument avec les vues
> génériques et je bloque dans la syntaxe. (et je m'y prends peut être mal)
>
> Ex :
> (r'^tag/(?P<slug>\w+)/$', 'object_list', dict(queryset=
> Post.objects.filter(pk='slug_field') , slug_field= 'url',
> extra_context={'all_tags': Tag.objects.all(), 'all_categories':
> Category.objects.all(), } )),
>
> L'idée serait de sortir tous les posts ayant le tag correspondant à mon
> slugfield.
Essaye avec queryset =
Tag.objects.get(slug=slug).entry_set.order_by('-pub_date')
(probablement à adapter, il faut peut-être le faire en deux fois...)
Sinon :
(r'^tag/(?P<object_id>[A-Za-z-_]+)/$',
'django.views.generic.list_detail.object_detail', tag_dict),
avec
tag_dict = {
'queryset': Tag.objects.all(),
'extra_context': { 'Post':Post },
}
>
> Pour le moment, grand néophyte de python/django, j'avoue aussi y perdre mon
> latin dans les tuples / listes / dictionnaires (finalement les tableaux en
> php, c'était peut être pas si mal que ça :-P )
Rhââââaaaa !
>
> Merci d'avance pour vos lumières,
> Nico
Bonne soirée,
David
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/cgi-bin/mailman/listinfo/django
>
>
Hors ligne
Le Mercredi 20 Décembre 2006 22:24, David Larlet a écrit :
> Quid de (?P<slug>[-\w]+) ?
Indeed avec un petit / en fin : (r'^post/(?P<slug>[-\w]+)/$',
> Essaye avec queryset =
> Tag.objects.get(slug=slug).entry_set.order_by('-pub_date')
>
> (probablement à adapter, il faut peut-être le faire en deux fois...)
Me dit "name 'slug' is not defined" :-(
> Sinon :
>
> (r'^tag/(?P<object_id>[A-Za-z-_]+)/$',
> 'django.views.generic.list_detail.object_detail', tag_dict),
>
> avec
>
> tag_dict = {
> 'queryset': Tag.objects.all(),
> 'extra_context': { 'Post':Post },
> }
Pour le tester, faut que j'ai une url en /tag/1bidule/ ? si le tag bidule a
pour id 1 ?
J'ai testé /tag/1 /tag/bidule /tag/1-bidule ...
Dans le cas /tag/bidule, il me dit "No tag found matching the query" alors que
pour les autres, apparemment c'est un problème de motif d'url.
Nico
Hors ligne
un petit up et j'en profite pour vous souhaiter à tous une bonne année
2007 :-)
Le Jeudi 21 Décembre 2006 15:49, Nicolas Steinmetz a écrit :
> Le Mercredi 20 Décembre 2006 22:24, David Larlet a écrit :
> > Quid de (?P<slug>[-\w]+) ?
>
> Indeed avec un petit / en fin : (r'^post/(?P<slug>[-\w]+)/$',
>
> > Essaye avec queryset =
> > Tag.objects.get(slug=slug).entry_set.order_by('-pub_date')
> >
> > (probablement à adapter, il faut peut-être le faire en deux fois...)
>
> Me dit "name 'slug' is not defined" :-(
>
> > Sinon :
> >
> > (r'^tag/(?P<object_id>[A-Za-z-_]+)/$',
> > 'django.views.generic.list_detail.object_detail', tag_dict),
> >
> > avec
> >
> > tag_dict = {
> > 'queryset': Tag.objects.all(),
> > 'extra_context': { 'Post':Post },
> > }
>
> Pour le tester, faut que j'ai une url en /tag/1bidule/ ? si le tag bidule a
> pour id 1 ?
>
> J'ai testé /tag/1 /tag/bidule /tag/1-bidule ...
>
> Dans le cas /tag/bidule, il me dit "No tag found matching the query" alors
> que pour les autres, apparemment c'est un problème de motif d'url.
>
> Nico
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/cgi-bin/mailman/listinfo/django
Hors ligne
2007/1/2, Nicolas Steinmetz <nsteinmetz _AT_ gmail.com>:
> un petit up et j'en profite pour vous souhaiter à tous une bonne année
> 2007 :-)
Oups c'est vrai... c'est possible que tu attaches tes fichiers pour
que je puisse voir où ça coince ?
Bonne année à tous :-)
David
Hors ligne
2007/1/3, David Larlet <larlet _AT_ gmail.com>:
>
> 2007/1/2, Nicolas Steinmetz <nsteinmetz _AT_ gmail.com>:
> > un petit up et j'en profite pour vous souhaiter à tous une bonne année
> > 2007 :-)
>
> Oups c'est vrai... c'est possible que tu attaches tes fichiers pour
> que je puisse voir où ça coince ?
http://atomecms.unelectronlibre.info/browser/atomecms/trunk/blog/models.py
http://atomecms.unelectronlibre.info/browser/atomecms/trunk/blog/urls.py
http://atomecms.unelectronlibre.info/browser/atomecms/trunk/templates/blog
Tu devrais pouvoir faire un check out global si le coeur t'en dit (à
vérifier, j'ai pas d'accès ssh pour le moment pour vérifier)
++
Nico
Hors ligne
David, as-tu pu regardé ?
2007/1/3, Nicolas Steinmetz <nsteinmetz _AT_ gmail.com>:
>
>
>
> 2007/1/3, David Larlet <larlet _AT_ gmail.com>:
> >
> > 2007/1/2, Nicolas Steinmetz <nsteinmetz _AT_ gmail.com>:
> > > un petit up et j'en profite pour vous souhaiter à tous une bonne année
> > > 2007 :-)
> >
> > Oups c'est vrai... c'est possible que tu attaches tes fichiers pour
> > que je puisse voir où ça coince ?
>
>
> http://atomecms.unelectronlibre.info/browser/atomecms/trunk/blog/models.py
> http://atomecms.unelectronlibre.info/browser/atomecms/trunk/blog/urls.py
> http://atomecms.unelectronlibre.info/browser/atomecms/trunk/templates/blog
>
> Tu devrais pouvoir faire un check out global si le coeur t'en dit (à
> vérifier, j'ai pas d'accès ssh pour le moment pour vérifier)
>
> ++
> Nico
>
>
Hors ligne
2007/1/6, Nicolas Steinmetz <nsteinmetz _AT_ gmail.com>:
> David, as-tu pu regardé ?
Trop rapidement
Je vais essayer de regarder ça demain.
++
David
Hors ligne
2007/1/17, David Larlet <larlet _AT_ gmail.com>:
>
> Essaye avec :
>
> (r'^tag/(?P<slug>[A-Z][a-z-]+)/$', # one tag details
> 'django.views.generic.list_detail.object_detail',
> dict(
> queryset = Tag.objects.all(),
> template_object_name = 'tag',
> slug_field='slug'
> )
> ),
>
> ça devrait marcher c'est ce que j'avais fait pour mon début de
> refonte. Je me demande comment je suis pas allé chercher là-dedans
> plus tôt...
(je remets la liste, ça peut toujours en intéresser d'autres)
Comme dit hier par IRC, j'ai pas essayé cette solution, mais plutôt celle ci
:
<
http://www.b-list.org/weblog/2006/11/16/django-tips-get-most-out-generic-views
>
Ce qui donne :
urlpatterns = patterns('',
(r'^$', 'django.views.generic.list_detail.object_list',
dict(queryset= Post.objects.all(),extra_context={'all_tags': Tag.objects.all(),
'all_categories': Category.objects.all(),} )),
(r'^post/(?P<slug>[-\w]+)/$', '
django.views.generic.list_detail.object_detail', dict(queryset=
Post.objects.all() , slug_field= 'url',extra_context={'all_tags':
Tag.objects.all(), 'all_categories': Category.objects.all(), } )),
(r'^tag/$', 'django.views.generic.list_detail.object_list',
dict(queryset= Tag.objects.all(), extra_context={'all_tags': Tag.objects.all(),
'all_categories': Category.objects.all(), } )),
(r'^tag/(?P<mytag>\w+)/$', 'atomecms.blog.views.postfortag_list'),
avec dans mon views.py :
from atomecms.blog.models import Post, Tag, Category
from django.views.generic.list_detail import object_list
# Create your views here.
def postfortag_list(request, mytag):
whoistag = Tag.objects.get(name=mytag)
postlist = Post.objects.filter(tag=whoistag.id)
return object_list(request, queryset=postlist,
extra_context={'all_tags': Tag.objects.all(), 'all_categories':
Category.objects.all(),})
J'ai amélioré un peu tout ça dans le train ce matin mais c'est sur ma
partition kubuntu :-P
David, tu parlais hier de fusionner les lignes whoitag= et postlist = avec
un __set de mémoire - tu peux me redonner le truc - j'ai pas pensé à le
noter hier :-/
Bonne journée,
Nico
Hors ligne
2007/1/18, Nicolas Steinmetz <nsteinmetz _AT_ gmail.com>:
> 2007/1/17, David Larlet <larlet _AT_ gmail.com>:
> > Essaye avec :
> >
> > (r'^tag/(?P<slug>[A-Z][a-z-]+)/$', # one tag details
> > 'django.views.generic.list_detail.object_detail',
> > dict(
> > queryset = Tag.objects.all(),
> > template_object_name = 'tag',
> > slug_field='slug'
> > )
> > ),
> >
> > ça devrait marcher c'est ce que j'avais fait pour mon début de
> > refonte. Je me demande comment je suis pas allé chercher là-dedans
> > plus tôt...
>
> (je remets la liste, ça peut toujours en intéresser d'autres)
>
> Comme dit hier par IRC, j'ai pas essayé cette solution, mais plutôt celle ci
> :
>
> <
> http://www.b-list.org/weblog/2006/11/16/django-tips-get-most-out-generic-views>
>
> Ce qui donne :
>
> urlpatterns = patterns('',
> (r'^$',
> 'django.views.generic.list_detail.object_list ',
> dict(queryset= Post.objects.all(),extra_context={'all_tags':
> Tag.objects.all(), 'all_categories': Category.objects.all(),} )),
> (r'^post/(?P<slug>[-\w]+)/$',
> 'django.views.generic.list_detail.object_detail ',
> dict(queryset= Post.objects.all() , slug_field=
> 'url',extra_context={'all_tags': Tag.objects.all(),
> 'all_categories': Category.objects.all(), } )),
> (r'^tag/$',
> 'django.views.generic.list_detail.object_list ',
> dict(queryset= Tag.objects.all(), extra_context={'all_tags':
> Tag.objects.all(), 'all_categories': Category.objects.all(), } )),
> (r'^tag/(?P<mytag>\w+)/$',
> 'atomecms.blog.views.postfortag_list' ),
>
> avec dans mon views.py :
>
> from atomecms.blog.models import Post, Tag, Category
> from django.views.generic.list_detail import object_list
>
> # Create your views here.
> def postfortag_list(request, mytag):
> whoistag = Tag.objects.get(name=mytag)
> postlist = Post.objects.filter(tag=whoistag.id)
> return object_list(request, queryset=postlist,
> extra_context={'all_tags': Tag.objects.all(), 'all_categories':
> Category.objects.all(),})
>
> J'ai amélioré un peu tout ça dans le train ce matin mais c'est sur ma
> partition kubuntu :-P
>
> David, tu parlais hier de fusionner les lignes whoitag= et postlist = avec
> un __set de mémoire - tu peux me redonner le truc - j'ai pas pensé à le
> noter hier :-/
Jan 17 21:49:24 <david`bgk> pourquoi tu fais pas whoistag.post_set à ce moment ?
Jan 17 21:49:45 <david`bgk> (pour avoir ta postlist)
Ça ferait postlist = whoistag.post_set.all()
Pas testé mais ça devrait être mieux.
Bonne journée,
David
Hors ligne
2007/1/18, David Larlet <larlet _AT_ gmail.com>:
>
>
> Jan 17 21:49:24 <david`bgk> pourquoi tu fais pas whoistag.post_set à ce
> moment ?
> Jan 17 21:49:45 <david`bgk> (pour avoir ta postlist)
>
> Ça ferait postlist = whoistag.post_set.all()
> Pas testé mais ça devrait être mieux.
Mieux je sais pas mais c'est pareil en tous cas pour le résultat ;-)
++
Nico
Hors ligne
J'ai fait un résumé ici si ça intéresse des gens :
<
http://www.unelectronlibre.info/index.php/post/2007/01/18/Django-et-les-vues-generiques-%3A-petit-exemple-de-filtrage-de-contenu
>
++
Nico
Hors ligne