Bonjour, je migre mon application pour utiliser des vues basées sur la classe au lieu de vues basées sur la fonction. Dans mon ancien code, j'ai pu obtenir l'URL absolue d'un objet lié à une vue de fonction de cette façon:
class CategoryView(ListPosts):
template_name = "postlist.html"
context_object_name="posts"
def get_queryset(self):
return Post.objects.filter(category__slug=self.kwargs['slug']).order_by('created')
5 Réponses :
Vous devez toujours donner à vos URLS un nom et reportez-vous à celui-ci:
@models.permalink
def get_absolute_url(self):
return ('category_view', (), {'slug': self.slug})
Selon les documents 1.6, le décorateur de permalien n'est plus recommandé: docs.djangoproject.com/fr/1.6/ref/models/instances/...
Selon les documents Django, vous devez utiliser inverse () code> docs.djangoproject.com/fr/2.1/ref/models/instances/...
Voici mon urls.py stry> p> modèles.py strong> p> mon URLS.PY est sous l'application "Produits", donc l'espace de noms d'URL est "Produits: Produit" P> P> get_absolute_url code> Configuration:
Et si la réégycle n'a pas été nommée comme suit: URL (R '^ Produits / ([\ w \-d \ -_] +) / $', vues.productview.as_view (), nom = 'Produit'), Comment Vous introduiriez le paramètre kwargs? Kwargs = Self.Slug ne fonctionne pas.
@Reveclair kwargs code> est un dictionnaire d'argument de mot clé, vous ne voudrez donc pas la définir égal à self.slug code>. Vous pouvez injecter des paramètres dans kwargs code> comme n'importe quel autre dictionnaire Python. I.e. kwargs ['foo'] = 'bar' code>. De plus, pour Django, seuls les paramètres d'URL nommés sont injectés dans kwargs code>, il est donc important de les nommer dans l'URL Regex.
Cette fonction a fonctionné pour moi, il utilise plusieurs paramètres:
Pourriez-vous expliquer pourquoi / comment cela fonctionne? Aussi, sont "chapiter" et "chpiter" censé être "chapitre"?
Voici comment vous le faites dans in Ajoutez le code suivant à votre pour afficher le détail, ajoutez une vue générique dans votre django> = 2.0 code>. urls.py code> p> modèles.py code> p> vues.py < / code> p>
La réponse 2018 à cette question est fondamentalement la même chose que @ Aaron's, mais pour un accès rapide ici, c'est le cas: de
À quoi ressemble la ligne appropriée dans votre URLCONF? Et quelle erreur Django vous jette-t-elle?