开发者

django form processing and submit issues

开发者 https://www.devze.com 2023-03-25 16:19 出处:网络
New to Django.I retrieve data from mysql db that are displayed into a form.User needs to choose among the form choices. The view processes data that have been posted from the form by querying the DB a

New to Django.I retrieve data from mysql db that are displayed into a form.User needs to choose among the form choices. The view processes data that have been posted from the form by querying the DB and should send the results in csv format or in graph.I am trying right now to create a csv file with the results of the query but submit does not work. views.py:

    def monitor(request):   
       if request.method == 'POST' :
        forms = ServicesForm(request.POST)
        if forms.is_valid():
            service = forms.cleaned_data['service']
            scale = forms.cleaned_data['scale']
            datatype = forms.cleaned_data['datatype']
            starttime = forms.cleaned_data['starttime']
            endtime = forms.cleaned_data['endtime']

            id = Servicenames.objects.raw('SELECT id FROM servicenames WHERE          servicename        =  ' + service )
            # process and create query  Select "dtime",datatype where "scale" = scale and "dtime' between starttime and endtime
            #                                  and service_id                  

            servicestats = Servicestats.objects.raw('SELECT distinct dtime,'+ datatype + ' FROM servicestats WHERE scale = '+ scale + ' AND dtime between '+ starttime + ' and '+ endtime + 'and service_id = '+ id.id)  
            response = HttpResponse(mimetype='text/csv') 
            response['Content-Disposition'] = 'attachment;filename="export.csv"'         
            writer = csv.writer(response)
            for s in servicestats:
                writer.writerow([s.dtime,s.datatype])

            return response

    else:
        forms =  ServicesForm


    return render_to_response('monitor/monitor.html', {'forms':forms},
       context_instance = RequestContext(request)) 



     models.py :

     class Servicenames(models.Model):
    id = models.IntegerField(primary_key=True)
    servicename = models.CharField(unique=True, max_length=255)
    class Meta:
        db_table = u'servicenames'
    def __unicode__(self):
        return self.servicename



    class Servicestats(models.Model):
    #  service_id = models.IntegerField(primary_key=True)
    service_id = models.ForeignKey(Servicenames)
    dtime = models.DateTimeField(primary_key=True)
    scale = models.IntegerField(primary_key=True)
    cnt = models.IntegerField()
    min = models.FloatField()
    max = models.FloatField()
    avg = models.FloatField()
    threenines = models.FloatField()


    class Meta:
        db_table = u'servicestats'


   forms.py :


    class ServicesForm(forms.Form):
    services=Servicenames.objects.all()
    service = forms.ModelMultipleChoiceField(queryset=services,widget=forms.Select(attrs={'class':'colr',}))
    scales = Servicestats.objects.values_list('scale', flat=True).distinct()
    scale = forms.ModelChoiceField(queryset=scales,widget=forms.Select(attrs={'onchange': 'this.form.submit();'}))
    DATATYPE_CHOICES = (
    ('cnt', 'cnt'),
    ('min', 'min'),
    ('max', 'max'),
    ('avg', 'avg'),
    ('threenines','threenines'),
)
    datatype = forms.ChoiceField(choices = DATATYPE_CHOICES,widget=forms.Select(attrs={'onchange': 'this.form.submit();'})) 

    starttime = forms.DateTimeField(initial = datetime.now) 
    endtime = forms.DateTimeField(initial = datetime.now)   


   template.html :




   % extends "bbase.html" %}

{% block extrascripts %}
$("#monitor").addClass("active")
{% endblock %}

{% block content %}
    <div class="main">
    <p>Welcome to the monito开发者_如何学运维ring management system.</p>
    <p>Stay tuned for more details</p>
    </div>
    <div>{{forms.service}}<span id="selection"><--Select services</span></div> 
    <div>{{forms.scale}}<span id="selection"><--Select resolution</span></div> 
    <div>{{forms.datatype}}<span id="selection"><--Select data type</span></div> 
    <div>{{forms.starttime}}<span id="selection"><--Select start time</span></div> 
    <div>{{forms.endtime}}<span id="selection"><--Select end time</span></div> 
    <input type = "submit" value = "Submit">

{% endblock %}

Thanks for the help.


It seems you are missing a form tag around your form!

try

<form action='' method='post'>{% csrf_token %}
    ...your form html...
    ...inputs...
    ...submit...
</form>
0

精彩评论

暂无评论...
验证码 换一张
取 消