J'ajoute le support de l'API MetaWeblog à un CMS Django, et je ne sais pas trop comment superposer l'application. J'utilise django_xmlrpc, ce qui me permet de mapper des fonctions paramétrées pour chaque requête. C'est juste un cas de quel niveau puis-je accrocher dans les appels à l'application django à partir des fonctions de service (AddPage, EditPage etc)Quel est le meilleur moyen d'ajouter une API à une application Django?
Pour django-page-cms, et je suppose que beaucoup d'applications django, la logique métier et la validation est contenu dans les formulaires. Dans ce cas, il y a PageForm (forms.ModelForm) et PageAdmin (ModelAdmin), qui contiennent beaucoup de logique et de validation.
Si je dois créer une API pour permettre la maintenance des pages et du contenu, est-ce que cela signifie que je devrais créer et remplir par programme une instance de PageAdmin? Puis attraper toutes les exceptions, et la conversion de leur équivalent api? Ou serait-ce une mauvaise idée - abuser de ce à quoi sont destinées les formes?
L'autre option consiste à refactoriser le code afin que les activités et la logique soient conservées en dehors des classes de formulaire. Ensuite, j'aurais la forme et l'API, les deux passer par la logique métier séparée.
Autres alternatives?
Quelle serait la meilleure solution?
Le service Web est déjà opérationnel. C'est un cas de quel niveau dans mon application puis-je accrocher. Donc, pour ma fonction de service AddPage() par exemple, vous génèreriez le formulaire d'administration par programme et le sauvegarderiez? –
Je ne sais pas ce qu'est un "formulaire d'administration". Je sais ce qu'est une forme de modèle (http://docs.djangoproject.com/fr/dev/topics/forms/modelforms/#modelform) Si vous voulez dire ModelForm, alors oui. Vous utilisez le formulaire modèle pour valider les entrées, créer des instances de modèle et enregistrer les objets dans la base de données. –
Les calques des cm vont PageAdmin (ModelAdmin)> PageForm (ModelForm) Page (Modèle). À l'heure actuelle, la seule façon de mettre à jour le contenu est via la zone d'administration. Il semble que la meilleure solution consistera pour mon service Web à utiliser PageForm, puis de refactoriser un peu afin que PageAdmin ne répète pas la même logique métier et la même validation. –