2009-06-17 7 views
0

J'ai développé du code qui s'appuie sur l'application de commentaires contrib, comme les gestionnaires pour les requêtes ajax. Ce code est dans une application séparée, que nous pouvons appeler 'comments2'. la configuration de l'URL du projet est structurée de telle manière que tous les appels/commentaires sont dirigés vers les vues de cette application. Cela fonctionne sans problèmes.Implémentation d'une balise de gabarit dans une application générique - django

Très récemment j'ai fait une nouvelle page qui montre les commentaires signalés comme inappropriés. Je pensais que c'était mieux fait en écrivant un templatetag d'inclusion, et j'en ai écrit un. Cela fonctionne comme ceci:

{% display_flagged_comments 'market' %} 

Cette étiquette est placée dans le modèle approprié de l'application principale.

Comme vu dans le code ci-dessus, je passe quel modèle (Market dans ce cas) les commentaires appartiennent à de sorte que l'application comments2 reste générique.

J'ai trois questions ici que je besoin de conseils sur:

D'abord, je pense que l'argument modèle étant entre guillemets (« marché ») rendre le code un peu moins élégant. Dans le code de l'argument est converti en un modèle:

#template tag 
def show_comments(modelname): 
    model = ContentType.objects.get(model=modelname) 
    ... # get comments and return them 

Deuxièmement, étant donné que toutes les demandes avec /commentaires sont dirigés vers comment2 application, je dois concevoir une autre URL pour cette page (il se trouve dans la principale application), comme/managecomments. Je trouve cela aussi inélégant. Troisièmement, je veux savoir si j'ai suivi un chemin correct ou s'il y a une meilleure façon d'implémenter ce que j'essaie de faire.

Merci d'avance.

Répondre

0

ContentTypeManager a quelque peu résolu votre premier problème pour vous. Vous pouvez utiliser la méthode get_for_model, qui accepte à la fois une classe ou une instance. Lire la suite au the contettypes docs.

Questions connexes