اذهب إلى المحتوى
  • 0

كيف يمكنني إعطاء معرف للزر في حلقة for في اطار عمل django

محمد لارافيل

السؤال

أقوم بإنشاء تطبيق اختبار في Python Django حيث أقوم في بتكرار  قائمة من الأسئلة ثم تكرار  قائمة إجابات للسؤال الحالي وعرضها. لدي زر لكل إجابة. عندما أنقر على زر الرد ، يتم تشغيل طلب أجاكس والتي تقوم بتحقق مما إذا كانت الإجابة صحيحة وإرجاع الرد. كيف يمكنني جعل زر الإجابة الذي تم النقر عليه باللون الأحمر أو الأخضر اعتمادًا على الإجابة التي حصلت عليها من رد الطلب اجاكس والتي من خلالها أعرف إذا كانت صحيحة أم خاطئة ؟
الكود

<div class="row">
    {% for question in questions %}
    <div class="col-md-4" >
        <div class="card mb-2" id="question_counter" value="{{forloop.counter}}">
            <div class="card-body"  >
                <p>{{forloop.counter}}{{"."}}{{ question.question|safe }}</p>
                <br>
                 <div class="card-body" >
                    {% for answer in question.answers %}
                     <li><button type="button" class="btn btn-primary display: inline-block width: auto;" name="answer" id="submit" value="{{answer}}">{{ answer|safe }}</button></li>
                    </br>
                    {% endfor %}
                 </div>
                </p>
            </div>
        </div>
    </div>
    {% endfor %}

شكرا مقدما

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك استخدام jQuery لتغيير لون الزر بعد الحصول على الرد من الطلب AJAX. يجب عليك تضمين jQuery في قالب HTML الخاص بك.

يمكنك تغيير لون الزر باستخدام jQuery عن طريق addClass و removeClass وتعيين فئات CSS تمثل الألوان الخاصة بك.

اليك بعض الاكواد التي يمكنك إضافتها إلى قالب HTML الخاص بك:

HTML:

<!-- add a class to the answer button to select it in jQuery -->
<button type="button" class="btn btn-primary display: inline-block width: auto; answer-btn" name="answer" id="submit" value="{{answer}}">{{ answer|safe }}</button>

 

JavaScript:
 

<script type="text/javascript">
    // add a click event listener to all answer buttons
    $('.answer-btn').click(function() {
        var clickedBtn = $(this);
        var answer = $(this).val();
        var questionCounter = $(this).closest('.card').attr('value');
        $.ajax({
            type: "POST",
            url: "check_answer",
            data: {'answer': answer, 'question_counter': questionCounter},
            dataType: "json",
            success: function(data) {
                if (data.is_correct) {
                    clickedBtn.addClass('btn-success');
                    clickedBtn.removeClass('btn-primary');
                } else {
                    clickedBtn.addClass('btn-danger');
                    clickedBtn.removeClass('btn-primary');
                }
            },
            error: function(xhr, textStatus, errorThrown) {
                console.log('Error:', errorThrown);
            }
        });
    });
</script>

 

في هذا المثال، يتم إضافة كلاس "btn-success" أو "btn-danger" إلى الزر الذي تم النقر عليه، حسبما يكون الجواب الذي تم إرجاعه صحيحًا أو خاطئًا. يتم إزالة فئة "btn-primary" من الزر أيضًا.

تأكد من تغيير اسم مسار url في الطلب AJAX "url: 'check_answer'" ليتوافق مع مسار url الخاص بوظيفة Django الخاصة بالتحقق من الإجابة.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...