Как использовать Sweetify в Django - PullRequest
1 голос
/ 15 марта 2020

После того, как учитель войдет в свою учетную запись, он / она сможет обновить поведение ученика, а после того, как учитель обновит поведение ученика своего ученика, появится всплывающее сообщение (сообщение об улучшении)

сценарий:

enter image description here

это я хочу результат

enter image description here

это моя ссылка: https://github.com/Atrox/sweetify-django

def Updatestudentbehavior(request):
    ...
    sweetify.success(request, 'You did it', text='Good job! You successfully showed a SweetAlert message',
                     persistent='Hell yeah')

    **#update data without refreshing page and popup message will appear**


def teacher(request):
    if request.method != 'POST':
        raise Http404('Only POSTs are allowed')
    try:
         ......
         return render(request, 'Homepage/index.html')
    except EmployeeUser.DoesNotExist:
        messages.warning(request, 'Your Username and password are Incorrect.')
        ….
    return render(request, 'Homepage/TeacherLogin.html')

def corevalues(request):
    ...
    if StudentsBehaviorGrades.objects.filter(Teacher = teacher).exists():

        ….

        return render(request, 'Homepage/updatebehavior.html',
                      {'studentsbehaviorgrade':studentsbehaviorgrade,'student':student,'teacher': teacher, 'behavior': behavior, 'behaviorperlevel': behaviorperlevel,
                       "behaviorperlevels": behaviorperlevels, "period": period})
    else:
        ….
        return render(request, 'Homepage/behavior.html',
                      {'teacher': teacher, 'behavior': behavior, 'behaviorperlevel': behaviorperlevel,
                       "behaviorperlevels": behaviorperlevels, "Students": Students, "period": period})

urls.py

path('teacher/', Homepage.views.teacher, name='teacher'),
path('Updatestudentbehavior/', Homepage.views.Updatestudentbehavior, name='Updatestudentbehavior'),

my settings.py

INSTALLED_APPS = [
    ….
    'sweetify',
]

SWEETIFY_SWEETALERT_LIBRARY = 'sweetalert2'

my html

{% load sweetify %}
{% sweetify %}
….
<form class="myform" action="{% url 'Updatestudentbehavior' %}" method="POST"  style="width: 100%" >{% csrf_token %}
    ….
    <input type="submit" value="Update" class="myform">
</form>
<script type="text/javascript">
   $(document).on('submit', '.myform', function(e) {
      e.preventDefault();
      console.log(this);
        $.ajax({
            type:'POST',
            url:'{% url 'Updatestudentbehavior' %}'
            data:{
                teacher:$('#teacher').val(),
                student:$('#student').val(),
                marking:$('#marking').val(),
                csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
            },
            success:function(){
                alert('Update Success');
            }
        });
   });
</script>
<script src="https://code.jquery.com/jquery-3.1.0.min.js"></script>
</body>
</html>

ОБНОВЛЕНИЕ

когда я пытаюсь это

def Updatestudentbehavior(request):
     ….
     sweetify.success(request, 'You did it', text='Good job! You successfully showed a SweetAlert message',
                 persistent='Hell yeah')
     return redirect(request.path_info)

это ошибка, которую я получаю

enter image description here

и это от терминала

enter image description here

1 Ответ

0 голосов
/ 17 марта 2020

Сама ошибка довольно понятна. Страница была перенаправлена ​​слишком много раз. Это происходит потому, что вы использовали return redirect(request.path_info) в представлении Updatestudentbehavior.

Если вы посмотрите документацию , вы заметите, что request.path_info - это URL текущего представления. сам. Это означает, что представление перенаправляет запрос к себе снова и снова, что приводит к ошибке в браузере.

Вместо использования request.path_info, пожалуйста, используйте URL-адрес страницы, с которой был сгенерирован этот запрос.

...