comment utiliser les formes en django-cms?
Je suis un novice absolu de django-cms. Je suis allé dans le tutoriel et configuré, il est exactement le même que celui mentionné dans la documentation. Maintenant, je dois créer une application qui utilise un formulaire à télécharger des produits.
Je n'ai pas une idée sur la façon d'aller de l'avant avec elle. Je veux le lancer avec des formes simples, comme si maintenant, par exemple, un nom d'utilisateur et le mot de passe de zone de texte genre de. Comment puis-je utiliser django formes dans django-cms page? J'ai extrait de plugin activé aussi. J'ai besoin de quelques conseils pour cela.
Des suggestions plsss.
grâce
source d'informationauteur Maverick | 2011-03-26
Vous devez vous connecter pour publier un commentaire.
J'ai récemment couru à travers django-forme-designer
C'est très agréable et permet de concevoir des formulaires dans un wysiwyg. Fonctionne pour stand alone django applications et dispose d'un plugin supplémentaire pour Django-CMS. Une remarque: vous devez suivre le programme d'installation autonome instructions en plus de Django-CMS instructions pour l'installation.
De l'github description:
Fait la solution proposé par bennylope n'est pas la meilleure façon de le faire, puisque l'utilisation de la demande.POST dans un plugin peut avoir de très mauvais effets secondaires (par exemple: si le même plugin est deux fois sur une page? Ou si il y a plusieurs plugins d'attente pour publier des données sur la même page? Ces plugins ne pas confondre les uns les autres quand il y a un POST de la page).
De sorte que le meilleur moyen est:
En supposant que votre produit fonctionne comme prévu sans Django CMS, ce que vous souhaitez suivante voulez faire est de créer votre propre plugin pour afficher le formulaire. Le plugin rendrait votre formulaire, que vous avez déjà définis dans votre propre application en utilisant un plugin modèle que vous avez créé.
Ce plugin pour un formulaire de contact permet le formulaire de contact pour être inséré dans le modèle de page de n'importe où un espace réservé permet.
Le modèle de toutes les HTML et Django modèle de langue nécessaires pour rendre le formulaire.
Cet autre formulaire de contact plugin montre un autre exemple de comment le faire. Au lieu de rendre la forme il met juste à jour le contexte. L'avantage est que vous n'avez pas à créer un nouveau modèle, mais l'inconvénient est que vous perdez une partie de la modularité d'avoir un plugin. Cela dépend du modèle de page de rendu du formulaire.
Dans les deux cas, vous devez encore définir la vue d'accepter la soumission du formulaire, ce qui signifie que vous aurez besoin pour créer une vue de l'extérieur de la CMS, accusant réception de la forme, avec son propre modèle, en redirigeant l'utilisateur vers la page de référence, et/ou à l'acceptation d'une requête AJAX.
Je suis nouveau sur django-cms trop, mais la façon dont ojii décrit semble être la plus raisonnable:
Cependant pour moi ce qu'une solution partielle, car je n'ai pas seulement envie de redirection de la page cms contenant le plugin dans le cas de succès, mais aussi dans le cas d'erreurs de forme qui doivent être affichés. La redirection n'est pas le problème (je viens de redirection demande.META["HTTP_REFERER"]), mais la partie de la remise du formulaire (erreurs) de la cms page contenant le plugin est délicate.
La seule réponse que j'ai trouvé pour cela: - je utiliser une session de (l'Écriture de la forme dans la session en vue statique, puis de le supprimer à nouveau dans le plugin de rendu de la méthode). Pas la plus belle façon, mais il fonctionne. (Il y aurait de meilleures façons, si le cms de configuration des plugins aurait le soutien d'une certaine façon à rediriger au lieu de rendu, mais apparemment il n'y a pas une telle option: voir http://groups.google.com/group/django-cms/browse_thread/thread/79ab6080c80bbcb5 )
Ce pourrait être trop tard, mais j'ai eu un problème similaire et j'ai donc créé un cadre plus général de plugin: https://github.com/metzlar/cms-form-plugin qui arrive à être très semblable à bennylope de réponse.
Vous pouvez contourner par la levée d'une exception et l'attraper dans l'intergiciel (middleware:
http://djangosnippets.org/snippets/2541/