web-dev-qa-db-fra.com

Django sweetify

J'ai déjà lu la documentation sur https://github.com/Atrox/sweetify-Django mais je ne comprends pas clairement, j'ai déjà téléchargé et importé l'exigence de sweetify dans Django. Je veux juste que si l'enregistrement est mis à jour, le message contextuel (sweetify) apparaîtra.

def studentrecords(request):
   if request.method == 'POST':
      id = request.POST.get("id")
      update = StudentsEnrollmentRecord.objects.get(id=id)
      update.Section = s
      update.save()
      sweetify.success(request, 'You did it', text='Your Form has been Updated',persistent='Hell yeah')
      return render(request, 'Homepage/selectrecord.html')

c'est mon html

{% load sweetify %}
{% sweetify %}
 <form  method="post" action="/studentrecords/" enctype="multipart/form-data">{% csrf_token %}
<table>
    {% for student in myrecord %}
    <tr>
        <td>Control #</td>
        <td><input type="text" name="id" value="{{student.id}}"></td>
        <td><input type="submit"></td>
    </tr>
    <tr>
        <td>Name: </td>
        <td><input type="text" value="{{student.Student_Users.Firstname}} {{student.Student_Users.Lastname}} {{student.Student_Users.Middle_Initial}}"></td>
        <td>Course/Track</td>
        <td><input type="text" value="{{student.Courses}}"></td>
    </tr>
    <tr>
        <td>Education Level: </td>
        <td><input type="text" value="{{student.Education_Levels}}"></td>
        <td>Strand: </td>
        <td><input type="text" value="{{student.strands}}"></td>
    </tr>
    <tr>
        <td>Section: </td>
        <td>
            <select name="section">
                <option value="{{student.Section.id}}">{{student.Section}}</option>
                {% for sections in section %}
                <option value="{{sections.id}}">{{sections.Description}}</option>
                {% endfor %}
            </select>
        </td>
        <td>Payment Type: </td>
        <td><input type="text" value="{{student.Payment_Type}}" class="myform"></td>
    </tr>
    {% endfor %}
</table>
 </form>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@9"></script>
<script>
    Swal.fire(
  'Good job!',
   'Data Updated!',
  'success'
)
</script>

mes paramètres.py

INSTALLED_APPS = [
    #my apps
    ….
    'sweetify'
]
SWEETIFY_SWEETALERT_LIBRARY = 'sweetalert2'

Je n'ai reçu aucune erreur, mais aucun message contextuel n'apparaît (sweetify)

6
Mary

Je pense qu'il se peut que vous ayez juste besoin de charger le script sur CDN en haut de la page. En regardant la bibliothèque, il semble que la balise de modèle {% sweetify %} charge juste quelque chose d'un peu comme ça:

<script>
    Swal.fire(...)
</script>

Donc, si vous n'avez pas encore chargé le script d'alertes douces, Swal sera simplement indéfini. Vous serez en mesure de confirmer si c'est le problème en ouvrant vos outils de développement, et dans la console, vous verrez un message qui est quelque chose comme "undefined n'a pas de feu de propriété" ou quelque chose comme ça. Je suis curieux, est-ce que le Swal.fire vous avez au bas de la page du travail?

2
tim-mccurrach

Tout d'abord, si vous souhaitez recevoir une notification sur une mise à jour d'enregistrement, je vous suggère d'utiliser des signaux plutôt que de détecter la méthode de demande. C'est une solution beaucoup plus centrale et robuste. Ajoutez simplement ceci à votre models.py:

from Django.db.models.signals import post_save

@receiver(models.signals.post_save, sender=StudentsEnrollmentRecord)
def update_enrollment_record_handler(sender, updated_instance, **kwargs):
    """This method is called after every call of StudentsEnrollmentRecord.save"""
    sweetify.success(request, 'You did it', text='Your Form has been Updated',persistent='Hell yeah')

Deuxièmement - POST est destiné à créer un objet via un RestAPI, vous devez passer à UPDATE (inclut tous les champs d'objets) ou PUT (met à jour certains des champs d'objets).

Troisièmement - que se passe-t-il lorsque vous ajoutez une déclaration imprimée au-dessus de la ligne sweetify? Cette impression fonctionne-t-elle? Sinon, alors toute votre configuration n'appelle même pas la méthode studentrecords et vous devrez partager plus d'informations afin que nous puissions répliquer la situation et/ou vous conseiller davantage.

0
Jura Brazdil