J'ai quelques éléments GUI complexes (comme un calendrier personnalisé avec beaucoup de jours qui peuvent être mis en évidence) qui apparaissent avec les champs de saisie de formulaire django standard. Je veux traiter les E/S de données à partir de ces formes complexes avec les formulaires Django. Auparavant, j'utiliserais les requêtes AJAX pour traiter ces éléments GUI personnalisés sur mon formulaire HTML après l'enregistrement ou le rendu du formulaire Django, mais cela entraîne une série de problèmes et un codage AJAX personnalisé. Quel est un bon moyen de gérer les widgets d'interactions complexes dans un formulaire Django?Comment traiter un élément d'interface graphique complexe dans un formulaire django?
Répondre
Je ne sais pas si je comprends parfaitement, mais vous pourriez avoir la valeur de votre interface utilisateur enregistrée dans un élément caché sur le formulaire via javascript. Cela peut être fait car ils sélectionnent les valeurs dans l'interface utilisateur ou quand ils soumettent le formulaire. pseudo-code en supposant JQuery à l'aide de soumettre() pour enregistrer avant la soumettre les données sont envoyées:
$('#myForm').submit(function(){
// get the value of your UI
var calendarValue = calendarWidget.getValue()
// #calendarData is the hidden field
$('#calendarData').val(calendarValue)
})
Cela nécessite évidemment JS, mais le fait en utilisant votre élément d'interface utilisateur.
Votre question est très vague, donc je vous suggère de lire la documentation de Django sur writing a custom field et j'espère que cela vous aidera à démarrer. Vous pourriez également vouloir étudier l'écriture d'un widget personnalisé. Malheureusement, la documentation manque un peu là-dessus, mais une recherche sur Google fait apparaître plusieurs articles de blog utiles, notamment this one.
Vous avez trois options selon la façon dont vous produisez votre sous-classe Django Form à la page HTML.
La première n'implique aucune forme. Toute entrée de formulaire html se retrouvera dans request.POST, vous pouvez donc y accéder. Bien sûr, ils ne seront pas liés à votre sous-classe Form, donc vous devrez injecter manuellement la valeur en utilisant un constructeur de formulaire personnalisé, ou en définissant une propriété sur votre objet Form après l'avoir instanciée avec request.POST. C'est probablement l'option la moins souhaitable, mais je le mentionne dans le cas où votre cas d'utilisation ne supporte vraiment rien d'autre. La seconde est une option si vous produisez manuellement les champs de formulaire dans votre code HTML (par exemple: en utilisant {{ myform.field }}
plutôt que seulement {{ myform }}
.) Dans ce cas, créez une variable cachée pour contenir la valeur de votre outil d'interface graphique de calendrier (les chances sont, Ajoutez ce champ caché, avec le bon nom et le bon ID, à la sous-classe Form elle-même, en vérifiant qu'il y a un widget de forme django caché.Si nécessaire, utilisez javascript comme Rob suggère de remplir le caché Lorsque le formulaire est posté, il sera normalement lié à votre sous-classe de formulaire parce que, cette fois, vous avez un champ dans votre sous-classe Form avec ce nom.La machine pour clean()
fonctionnera comme d'habitude
, et le meilleur opti sur, est d'écrire un champ personnalisé django; Le message d'Andrew a le lien. Les champs Django ont la capacité de spécifier les exigences js
et, de sorte que vous pouvez encapsuler automatiquement ces dépendances pour toute page utilisant votre widget de calendrier.
- 1. Android: Comment redessiner un élément graphique?
- 2. Commande complexe dans Django
- 3. requête complexe dans Django
- 4. Formulaire de soumission complexe utilisant AJAX pour traiter un script supplémentaire
- 5. Comment soumettre un formulaire complexe en utilisant AJAX de Jquery?
- 6. Insertion d'une rubrique dans un formulaire Django
- 7. ajouter un élément au menu contextuel dans le graphique Excel
- 8. Rails Formulaire complexe Validations?
- 9. Comment obtenir l'étiquette d'un choix dans un formulaire Django ChoiceField?
- 10. Comment restituer un formulaire django dans une vue?
- 11. aide avec joindre complexe dans Django ORM
- 12. Trouver un point dans un polygone complexe
- 13. ajouter un caractère chinois dans un élément de graphique dans les rapports jasper
- 14. Dans django, comment trier un modèle sur un champ et obtenir le dernier élément?
- 15. Générer et soumettre un nombre dynamique d'objets dans un formulaire avec Django
- 16. Rendre un formulaire non valide sans déclencher ValidationError dans Django
- 17. Excel VBA: quel contrôle OLE/OCX utiliser pour afficher un graphique dans un formulaire?
- 18. Comment masquer un champ de clé primaire dans un formulaire Django
- 19. la sélection d'un élément dans un dictionnaire via une interface graphique
- 20. Traiter un processus plus long dans WCF
- 21. Comment traiter deux types similaires en un?
- 22. Validation de formulaire dans django
- 23. Requête PowerShell: comment traiter un fichier
- 24. un peu complexe mySQL Interrogation
- 25. Flex: Comment afficher les détails d'un élément DataGrid selectedItem dans un formulaire
- 26. Comment créer un élément de menu Django ModelForm sélectionné par défaut?
- 27. traiter les doublons dans un bst
- 28. validation de formulaire dans django
- 29. JSP: Créer un graphique
- 30. Dans Django, comment construire un formset manuellement dans un template?