Django - Commentaires

Avant de commencer, notez que le framework Django Comments est obsolète, depuis la version 1.5. Vous pouvez maintenant utiliser une fonctionnalité externe pour le faire, mais si vous souhaitez toujours l'utiliser, elle est toujours incluse dans les versions 1.6 et 1.7. À partir de la version 1.8, il est absent mais vous pouvez toujours obtenir le code sur un autre compte GitHub.

Le cadre de commentaires facilite l'attachement de commentaires à n'importe quel modèle de votre application.

Pour commencer à utiliser le framework de commentaires Django -

Modifiez le fichier settings.py du projet et ajoutez 'django.contrib.sites', et 'django.contrib.comments', à l'option INSTALLED_APPS -

INSTALLED_APPS += ('django.contrib.sites', 'django.contrib.comments',)

Obtenez l'identifiant du site -

>>> from django.contrib.sites.models import Site
>>> Site().save()
>>> Site.objects.all()[0].id
u'56194498e13823167dd43c64'

Définissez l'identifiant que vous obtenez dans le fichier settings.py -

SITE_ID = u'56194498e13823167dd43c64'

Sync db, pour créer toute la table ou collection de commentaires -

python manage.py syncdb

Ajoutez les URL de l'application de commentaires aux urls.py de votre projet -

from django.conf.urls import include
url(r'^comments/', include('django.contrib.comments.urls')),

Maintenant que le framework est installé, modifions nos modèles Hello pour suivre les commentaires sur notre modèle Dreamreal. Nous listerons, enregistrerons les commentaires pour une entrée Dreamreal spécifique dont le nom sera passé en paramètre à l'URL / myapp / hello.

Modèle Dreamreal

class Dreamreal(models.Model):

   website = models.CharField(max_length = 50)
   mail = models.CharField(max_length = 50)
   name = models.CharField(max_length = 50)
   phonenumber = models.IntegerField()

   class Meta:
      db_table = "dreamreal"

bonjour vue

def hello(request, Name):
   today = datetime.datetime.now().date()
   daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
   dreamreal = Dreamreal.objects.get(name = Name)
   return render(request, 'hello.html', locals())

modèle hello.html

{% extends "main_template.html" %}
{% load comments %}
{% block title %}My Hello Page{% endblock %}
{% block content %}

<p>
   Our Dreamreal Entry:
   <p><strong>Name :</strong> {{dreamreal.name}}</p>
   <p><strong>Website :</strong> {{dreamreal.website}}</p>
   <p><strong>Phone :</strong> {{dreamreal.phonenumber}}</p>
   <p><strong>Number of comments :<strong> 
   {% get_comment_count for dreamreal as comment_count %} {{ comment_count }}</p>
   <p>List of comments :</p>
   {% render_comment_list for dreamreal %}
</p>

{% render_comment_form for dreamreal %}
{% endblock %}

Enfin l'URL de mappage vers notre vue Hello -

url(r'^hello/(?P<Name>\w+)/', 'hello', name = 'hello'),

Maintenant,

  • Dans notre template (hello.html), chargez le framework de commentaires avec - {% load comments%}

  • Nous obtenons le nombre de commentaires pour l'objet Dreamreal passant par la vue - {% get_comment_count pour dreamreal comme comment_count%}

  • Nous obtenons la liste des commentaires pour les objets - {% render_comment_list pour dreamreal%}

  • Nous affichons le formulaire de commentaires par défaut - {% render_comment_form for dreamreal%}

En accédant à / myapp / hello / steve, vous obtiendrez les informations de commentaires pour l'entrée Dreamreal dont le nom est Steve. L'accès à cette URL vous amènera -

En publiant un commentaire, vous serez redirigé vers la page suivante -

Si vous allez à nouveau dans / myapp / hello / steve, vous verrez la page suivante -

Comme vous pouvez le voir, le nombre de commentaires est maintenant de 1 et vous avez le commentaire sous la liste des commentaires.