Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django forms breaking in IE7

I've got a dJango webform from a model with some error checking (valid email field,etc). Everything works fine in various browsers Opera,Camino,Netscape,Safari and IE (except IE7).

All I get in IE7 is the 'Internet Explorer cannot display the webpage' message. If the forms valid the data gets written to the database so I think its something to do with the redirect stage.

I've tried various things method=get and javascript form submission but nothing seems to stop IE7 giving me this error.

Any help would be appreciated.

forms.py

class NewElectiveForm(ModelForm):  
    host_country    = forms.CharField(widget=forms.widgets.Select(choices=COUNTRIES) , label="Destination")
    host_type       = forms.CharField(widget=forms.widgets.Select(choices=HOST_TYPE) , label="Location type")      
    host_name       = forms.CharField(max_length=256, label="Name of host institution")
    host_street     = forms.CharField(required = False, max_length=100, label="Street")
    host_city       = forms.CharField(required = False, max_length=100, label="City") 
    host_district   = forms.CharField(required = False, max_length=100, label="District")
    host_zipcode    = forms.CharField(required = False, max_length=100, label="Zipcode")
    host_supervisor = forms.CharField(required = False, max_length=256, label="Name of supervisor")
    host_email      = forms.EmailField(required = False, max_length=100, label="Email")
    host_fax        = forms.CharField(required = False, max_length=100, label="Fax.No.")
    host_tel        = forms.CharField(required = False, max_length=100, label="Tel.No.")
    start_date      = forms.DateField(widget=SelectDateWidget(),label="Elective start date")   
    end_date        = forms.DateField(widget=SelectDateWidget(),label="Elective end date")   
    subject         = forms.CharField(required = False, max_length=256,label="Subject")
    reasons         = forms.CharField(required = False, widget=forms.widgets.Textarea(attrs={'class':'question'}),   label="Please state briefly the reasons for this choice's location and subject")
    outcomes        = forms.CharField(required = False, widget=forms.widgets.Textarea(attrs={'class':'question'}), label="Please give upto to 4 outcomes that you hope to achieve during this elective")
    your_mobile     = forms.CharField(required = False, max_length=100,  label="Please provide your mobile number if you are taking it with you")        
    insurance       = forms.BooleanField(required = False, label="Please confirm that you have arranged holiday insurance")
    malpractice     = forms.BooleanField(required = False, label="Please confirm that you have medical malpractice cover")
    groupinfo       = forms.CharField(required = False, label="If you planning your Elective in a group, please list your fellow students") 
    #risk_upload = forms.FileField(widget=AdminFileWidget, required = False, label='Upload a completed risk assesment form')
    #evidence_upload = forms.FileField(widget=AdminFileWidget, required = False, label='Upload an evidence document')


    class Meta:
            model = ElectiveRecord        
            exclude = ('id', 'review','elective', 'status', 'edit_userid','modified')

html template:

<form  enctype="multipart/form-data" method="post" class="uniForm" id="newform" >
   {% for i in form %}
   <div class="fieldwrapper {% for error in i.errors %} error {% endfor %}">
 {% for error in i.errors %}
   <b>{{error|escape}}</b><br/> 
 {% endfor %}
 {{ i.label_tag }} :
  {% if i.html_name == "reasons" or  i.html_name == "outcomes" %} <br/> {% endif %}
 {{ i }}
 {% if i.html_name == "evidence_upload" %} <br/>latest file= xxx {% endif %}
        {% if i.html_name == "risk_upload" %} <br/>latest file= xxx {% endif %}
 </div>  
    {%endfor%} 
    <div class="fieldWrapper"> <input type="submit" value="Save" NAME='save'   > </div>
</form>

models.py

class ElectiveRecord(models.Model):
        elective        = models.ForeignKey(Elective, null=True, blank=True)  
        status          = models.CharField(choices=ELECTIVE_STATUS_FLAGS, max_length=40)
        edit_date       = models.DateTimeField(auto_now_add=True)        
        edit_userid     = models.CharField(max_length=12)
        host_country    = models.CharField(max_length=100, help_text="Destination")
        host_type       = models.CharField(choices=HOST_TYPE, max_length=10, help_text="Location type")      
        host_name       = models.CharField(max_length=256, help_text="Name of host institution")
        host_street     = models.CharField(max_length=100, help_text="Street")
        host_city       = models.CharField(max_length=100, help_text="City") 
        host_district   = models.CharField(max_length=100, help_text="District")
        host_zipcode    = models.CharField(max_length=100, help_text="Zipcode")
        host_supervisor = models.CharField(max_length=256, help_text="Name of supervisor")
        host_email      = models.CharField(max_length=100, help_text="Email")
        host_fax        = models.CharField(max_length=100, blank=True, help_text="Fax.No.")
        host_tel        = models.CharField(max_length=100, help_text="Tel.No.")
        start_date      = models.DateField(help_text="Elective start date")   
        end_date        = models.DateField(help_text="Elective end date")   
        subject         = models.CharField(max_length=256,help_text="Tel.No.")
        reasons         = models.TextField(help_text="Please state briefly the reasons for this choice's location and subject")
        outcomes        = models.TextField(help_text="Please give upto to 4 outcomes that you hope to achieve during this elective")
        your_mobile     = models.CharField(max_length=100, blank=True, help_text="Please provide your mobile number if you are taking it with you")        
        insurance       = models.BooleanField(default=False, help_text="Please confirm that you have arranged holiday insurance")
        malpractice     = models.BooleanField(default=False, help_text="Please confirm that you have medical malpractice cover")
        groupinfo       = models.CharField(max_length=256, blank=True, help_text="If you planning your Elective in a group, please list your fellow students") 
        modified        = models.DateTimeField(auto_now_add=True)        
        class Meta:
              get_latest_by = 'modified'        
        def __unicode__(self):
                return u"[%s] %s, %s  " % (self.id,self.host_name,self.subject)
like image 898
sithbunny Avatar asked Aug 27 '10 14:08

sithbunny


1 Answers

Confirm that it's the redirect stage that's causing the problem by replacing

HttpResponseRedirect(url)

with

HttpResponse('<!DOCTYPE html><html><head><title>title</title></head><body><a href="%(url)s">%(url)s</a></body></html>' % {'url':url})

If this doesn't render, then the problem is happening before the redirect. If it does render, then the problem may be the redirect, or it may be the redirected page. Click on the link. If the next page displays correctly, the problem is almost certainly the redirect itself. Otherwise, the problem is in the redirected page.

like image 168
Jordan Reiter Avatar answered Oct 13 '22 13:10

Jordan Reiter