Je suis nouveau à Stackoverflow et à Django ...
Brève question (voir ci-dessous pour "Question longue"), le code suivant dans myApps / vues.py a échoué: p> L'erreur est la suivante: p> 'My-View2' est définie dans myApps / vues.py après mon-vue (et est référencé dans myProject / URLS .PY) P> Je suppose qu'il y a quelque chose comme le poulet et l'œuf ici, mais je ne peux pas comprendre où je me trompe.
J'essaie de configurer login_url dans des paramètres.py comme celui-ci avec la même erreur: p> Maintenant question (quel contexte, pourquoi je veux faire ça): P> Travailler avec Django 1.3.1 J'ai eu la vue suivante, protégée avec auth.decorator: p> Ce décorateur de défaut Rediriger à / comptes / Connexion (cela fonctionne et ça Bien pour moi) PATH1 /
Ceci est dû à la configuration Apache qui disent quelque chose comme:
Wsgiscriptionnel / path1 /var/www/path/to/script.wsgioke/proxpe, et c'est bien pour moi. P> Toutes les URL définies dans myProject / urls.py sont automatiquement relatives à ce nouveau Chemin, donc grâce à Django, tout mon site fonctionne sur cette nouvelle "racine HTML". p> mais ma vue protégée redirige toujours sur My-Server: / comptes / login / à la place O My-Server: / PATH1 / COMPTES / Connexion P> Jusqu'à présent, je le fais fonctionner à l'aide des paramètres.py p> ou en utilisant login_url Paramètre de "Login_Required" Decorator: P > mais je voudrais que cette vue de connexion soit relative à l'ensemble du chemin du site sans configurer "Path1" dans Apache et Django / Params.py P> I Don 't sentit que d'utiliser inverse dans des paramètres.py est la bonne chose à faire
ni l'utiliser dans un décorateur de vue. Mais jusqu'à présent, je ne sais pas comment gérer cela ... p> p>
3 Réponses :
Vous ne pouvez pas utiliser dans django 1.4+, vous pouvez utiliser dans django 1.5+, le paramètre inverse code> dans le
login_required code> décorateur ou dans
paramètres.py code>, car la configuration URL n'a pas été chargée à Le temps que les paramètres / vues sont importés.
Reverse_lazy code>
. Sur les versions antérieures de Django, vous pouvez retourner Reverse_lazy CODE> ou voir ma réponse à la question Mappage d'URL inverse dans les paramètres . p>
login_url code> accepte les modèles d'URL nommés. Par exemple, si vous nommez votre modèle d'URL de connexion 'LOGIN', vous pouvez simplement faire: P>
LOGIN_URL = 'login'
Merci pour votre réponse précise! L'option que vous avez donnée est intéressante. Sachant que ce n'est pas possible dans la version 1.3.1 Je vais économiser du temps à essayer de le faire fonctionner!
Merci. J'ai couru dans ce numéro faisant mon propre décorateur et je devais m'assurer qu'il n'a pas forcé l'évaluation de inverse_lazy (...) code> trop tôt.
Suite à la fonction Reverse (), je connais un autre moyen d'atteindre mon objectif:
Je vais bien avec l'utilisation d'URL standard (comptes / login, etc.) Je veux juste préparer la racine du document HTML qui n'est pas "/" dans mon cas. P>
de mon test, cela ne fonctionne pas dans les paramètres.py (c'est trop tôt à cette étape?) P >
dans mes vues.py: p> devient p>
Vous êtes à la hauteur de l'URL, cela enfreint le sec!
Utiliser Documents Dites: P>
Il est utile que vous devez utiliser un renversement d'URL avant la charge de l'URLCONF de votre projet. Certains cas courants où cette fonction est nécessaire sont: P>
reverse_lazy () code> p>
Avez-vous vraiment une vue définie comme
My-View2 code>? Ce n'est pas un nom python valide,
- code> étant un opérateur. Si vous le faites, vous devez le renommer à
My_View2 code>.