私はすでに 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)
ページの上部にあるCDN経由でスクリプトをロードする必要があるだけかもしれません。ライブラリを見ると、テンプレートタグ{% sweetify %}
は、次のようなものをロードします。
<script>
Swal.fire(...)
</script>
したがって、スイートアラートスクリプトをまだロードしていない場合、Swal
は未定義になります。 dev-toolsを開くと、これが問題であるかどうかを確認でき、コンソールに「undefined has no property fire」などのメッセージが表示されます。私は好奇心が強い、Swal.fire
ページの下部に作業がありますか?
まず、レコードの更新に関する通知を受け取りたい場合は、リクエストメソッドを検出するのではなく、シグナルを使用することをお勧めします。これは、より中心的で堅牢なソリューションです。これを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
メソッドを呼び出すことすらありません。状況を再現したり、さらにアドバイスしたりできるように、より多くの情報を共有する必要があります。