reverse pour success_url sur Django Class Based View se plaignent de l'importation circulaire
Lors de l'utilisation de la méthode de vue, la redirection avec reverse
n'ai pas à me plaindre à ce sujet et peut encore le trouver à la racine de l'url de la conf. Mais, dans la classe de base des points de vue, il se plaindre:
ImproperlyConfigured at /blog/new-post/
The included urlconf 'blog.urls' does not appear to have any
patterns in it. If you see valid patterns in the file then the
issue is probably caused by a circular import.
Ma classe est définie comme ceci:
class BlogCreateView(generic.CreateView):
form_class = Blog
template_name = 'blog/new-post.html'
success_url = reverse('blog:list-post')
Comment utiliser correctement reverse
pour success_url
dans la classe de base des points de vue? Merci.
PS: Et je suis intéressé à pourquoi il est nécessaire de redémarrer runserver
après cette erreur (pas comme une erreur, comme TemplateDoesNotExists
qui n'est pas nécessaire de redémarrer runserver
)
source d'informationauteur Mas Bagol
Vous devez vous connecter pour publier un commentaire.
À l'aide de
reverse
dans votre méthode fonctionne parce quereverse
est appelée lorsque la vue est exécuté.Si vous overrride
get_success_url
alors vous pouvez toujours utiliserreverse
parce queget_success_url
appelsreverse
lorsque la vue est exécuté.Cependant, vous ne pouvez pas utiliser
reverse
avecsuccess_url
car alorsreverse
est appelée lorsque le module est importé, avant les url ont été chargés.Primordial
get_success_url
est une option, mais la méthode la plus simple solution est d'utiliserreverse_lazy
au lieu de l'inverse.Pour répondre à votre dernière question sur le redémarrage de la runserver, le
ImproperlyConfigured
d'erreur est différent deTemplateDoesNotExists
parce qu'il se produit lorsque l'application Django est chargé.Essayez d'utiliser
reverse_lazy
au lieu deinverse
dans votre CBV. Ses un paresseusement évalué version dereverse
. Il ne sera pas exécuté tant que la valeur est nécessaire.