Django和ajax表单。表格运行,但我没有收到确认信息

2024-05-26 07:47:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个页面,其中有两个django表单,可以分别提交。我不想在用户提交时重定向用户,我正在尝试使用ajax和django来完成一个带有确认消息的提交,而不是外部操作。你知道吗

这是我的表单.py你知道吗

from django import forms
from django.db import models
from django.forms import ModelForm
from debates.models import Affirmative,Negative

SCORE_CHOICES = (
        ('5','5'),
        ('6','6'),
        ('7','7'),
        ('8','8'),
        ('9','9'),
        ('10','10')
        )
scores = forms.ChoiceField(widget=forms.RadioSelect(), choices=SCORE_CHOICES)


class AffirmativeScore(ModelForm):
        SlideShowScore = scores.choices
        Speaker1 = scores.choices
        Speaker2 = scores.choices
        CrossExamination = scores.choices
        Argument = scores.choices
        class Meta:
            model = Affirmative

class NegativeScore(ModelForm):
        SlideShowScore = scores.choices
        Speaker1 = scores.choices
        Speaker2 = scores.choices
        CrossExamination = scores.choices
        Argument = scores.choices
        class Meta:
            model = Negative

你知道吗视图.py你知道吗

from django.shortcuts import render, get_object_or_404
from debates.models import Topic,Location,Date,Teacher
from debates.forms import AffirmativeScore,NegativeScore
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect



#get the debate that are on
def judge(request): 
    Submit_form = 'null'
    Affform = AffirmativeScore()
    Negform = NegativeScore()
    if request.method == 'GET':
        Affform = AffirmativeScore()
        Negform = NegativeScore()
    elif request.method == 'POST':
        if 'form_Positive' in request.POST:
            Affform = AffirmativeScore(request.POST)
            Submit_form = 'aff'
            if Affform.is_valid():
                Speaker1 = Affform.cleaned_data.get('Speaker1')
                Speaker2 = Affform.cleaned_data.get('Speaker2')
                CrossExamination = Affform.cleaned_data.get('CrossExamination')
                SlideShowScore = Affform.cleaned_data.get('SlideShowScore')
                Argument = Affform.cleaned_data.get('Argument')
                #return render_to_response(msg)
        elif 'form_Negative' in request.POST:
            Negform = NegativeScore(request.POST)
            Submit_form = 'neg'
            if Negform.is_valid():
                SlideShowScore = Negform.cleaned_data.get('SlideShowScore')
                Speaker1 = Negform.cleaned_data.get('Speaker1')
                Speaker2 = Negform.cleaned_data.get('Speaker2')
                CrossExamination = Negform.cleaned_data.get('CrossExamination')
                Argument = Negform.cleaned_data.get('Argument')
                msg = "The operation has been received correctly."
                print request.POST
                return render_to_response('debates/scoring_upload.html', {'msg':msg}, context_instance=RequestContext(request))
                #return render_to_response(msg)
        if request.is_ajax():
            return render(request, 'debates/scoring_upload.html')
            msg = "The operation has been received correctly."
            print request.POST
#Now return the rendered template
            return render_to_response('debates/scoring_upload.html', {'msg':msg}, context_instance=RequestContext(request))

    return render(request,'debates/judge.html', {
        'form1':Affform, 'form2':Negform,
    })

def handle(request):

    return render(request,'debates/scoring_upload.html', {
    })

你知道吗法官.html你知道吗

<html>
<head>
<link rel="stylesheet" type="text/css" href="{{STATIC_URL}}DebateSite.css">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">

    jQuery(function() {

        var form = jQuery("Form_Response")
        form.submit(function(e){
            jQuery("#sendbutton").attr('disabled', true)
            jQuery("#sendwrapper").prepend('<span>Sending message, please wait... </span>')
            jQuery("#ajaxwrapper").load(
                form.attr('action') + ' #ajaxwrapper',
                form.serializeArray(),
                function(responseText, responseStatus) {
                    jQuery("#sendbutton").attr('disabled', false)
                }

            );
            e.preventDefault();
        });
    });

</script>
</head>
<body>
<div class="Banner">
        Albany High School Freshmen Debates
    </div>

    <br>
    <br>
    <br>
    <br>
    <br>
    <br>


    <div id="Boxes">

        <div id="AffirmativeNegativeDiv">
            <div id="ScoreBox">


                <h1>Affirmative</h1>
                <br>

                    <form method='post'>
                    <div id="ajaxwrapper">
                        {% csrf_token %}
                        <br>
                        <br>
                        <ul>
                        {{ form1.as_p }}
                        </ul>
                        <p id="sendwrapper"><input type='submit' name='form_Positive' value='Submit_Postitive' /></p>
                    </div>
                </form>
            </div>

            <div id="ScoreBoxNeg">

                <h1>Negative</h1>
                <br>
                    <form method='post'>
                    {% csrf_token %}
                    <br>
                    <br>
                    <ul>
                    {{ form2.as_p }}
                    </ul>
                    <input type='submit' name='form_Negative' value='Submit_Negative' />

                </form>
            </div>

        </div>
    </div>
</body>

</html>

Tags: djangofrombrimportdivformdataget
1条回答
网友
1楼 · 发布于 2024-05-26 07:47:21

对于AJAX提交,有两个return语句

if request.is_ajax():
    return render(request, 'debates/scoring_upload.html')
    msg = "The operation has been received correctly."
    print request.POST
    #Now return the rendered template
    return render_to_response('debates/scoring_upload.html', {'msg':msg}, context_instance=RequestContext(request))

第一种是呈现模板而不将消息添加到上下文中。第二个永远也达不到。你知道吗

相关问题 更多 >