web-dev-qa-db-ja.com

Django sweetify

私はすでに https://github.com/Atrox/sweetify-Django に関するドキュメントを読みましたが、よくわかりません。DjangoでSweetifyの要件をダウンロードしてインポートしています。レコードが更新された場合、ポップアップメッセージ(sweetify)が表示されるようにしたいだけです。

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')

これは私の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>

私のsettings.py

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

エラーは発生しませんでしたが、ポップアップメッセージは表示されません(sweetify)

6
Mary

ページの上部にあるCDN経由でスクリプトをロードする必要があるだけかもしれません。ライブラリを見ると、テンプレートタグ{% sweetify %}は、次のようなものをロードします。

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

したがって、スイートアラートスクリプトをまだロードしていない場合、Swalは未定義になります。 dev-toolsを開くと、これが問題であるかどうかを確認でき、コンソールに「undefined has no property fire」などのメッセージが表示されます。私は好奇心が強い、Swal.fireページの下部に作業がありますか?

2
tim-mccurrach

まず、レコードの更新に関する通知を受け取りたい場合は、リクエストメソッドを検出するのではなく、シグナルを使用することをお勧めします。これは、より中心的で堅牢なソリューションです。これを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')

2番目-POSTはRestAPIを介してオブジェクトを作成するためのものであり、UPDATE(すべてのオブジェクトフィールドを含む)またはPUT(一部のオブジェクトフィールドを更新)に切り替える必要があります。

3番目-印刷ステートメントをsweetify行の上に追加するとどうなりますか?その印刷は実行されますか?そうでない場合は、セットアップ全体がstudentrecordsメソッドを呼び出すことすらありません。状況を再現したり、さらにアドバイスしたりできるように、より多くの情報を共有する必要があります。

0
Jura Brazdil