web-dev-qa-db-fra.com

Accéder aux kwargs à partir d'une URL dans un modèle Django

Puis-je accéder à la valeur d'un argument nommé (à partir de l'URL) dans un modèle Django?

Comme puis-je accéder à la valeur de this_name ci-dessous à partir d'un modèle Django?

url(r'^area/(?P<this_name>[\w-]+)/$', views.AreaView.as_view(), name="area_list")

Je pouvais obtenir le chemin URL complet et le décomposer, mais je voulais vérifier s'il y avait un moyen simple de le faire, car il a déjà un nom.

Le transmettre dans le contexte des données de la vue peut être une alternative mais je ne sais pas si j'ai besoin de le transmettre car je suppose que le modèle l'aurait déjà d'une manière ou d'une autre? Impossible de trouver une méthode directe dans API de demande cependant.

15
Anupam

Dans la vue, vous pouvez accéder à l'URL args et kwargs en tant que self.args et self.kwargs.

class MyView(View):
    def my_method(self):
        this_name = self.kwargs['this_name']

Si vous souhaitez uniquement accéder à la valeur dans le modèle, vous n'avez pas besoin de modifier la vue. La base get_context_data La méthode ajoute la vue au contexte sous la forme view, vous pouvez donc ajouter ce qui suit à votre modèle:

{{ view.kwargs.this_name }}
23
Alasdair