2013-04-29 156 views
0

我有一個簡單的Django窗體正在通過一個視圖傳遞到它應該顯示的模板,但是,由於我 - 5小時後 - 未能推斷出來的原因,它沒有。任何和所有的想法歡迎,我渴望解決這個令人討厭的問題。Django窗體無法顯示

我有以下的Django形式:

class BandAddToCartForm(forms.Form): 
    LENGTH_CHOICES = (('XS', 'XS'), 
         ('S', 'S'), 
         ('M', 'M')) 
    length = forms.Select(choices=LENGTH_CHOICES) 
    quantity = forms.IntegerField(widget=forms.HiddenInput()) 
    band_sku = forms.CharField(widget=forms.HiddenInput()) 

    # override the default __init__ so we can set the request 
    def __init__(self, request=None, *args, **kwargs): 
     self.request = request 
     super(BandAddToCartForm, self).__init__(*args, **kwargs) 

    # custom validation to check for cookies 
    def clean(self): 
     if self.request: 
      if not self.request.session.test_cookie_worked(): 
       raise forms.ValidationError("Cookies must be enabled.") 
     return self.cleaned_data 

它是通過以下觀點傳遞給模板:

def show_custom_watches(request, 
         template_name="catalog/custom_watches.html"): 
    bands = Band.objects.all() 
    page_title = "Custom Watches" 
    meta_keywords = "custom, watches, beaded" 
    meta_description = "Custom beaded watches for every occassion." 
    return render_to_response(template_name, 
           locals(), 
           context_instance=RequestContext(request)) 
    # need to evaluate the HTTP method 
    if request.method == 'POST': 
     #add to cart, create bound form 
     postdata = request.POST.copy() 
     form = BandAddToCartForm(request, postdata) 
     #check if posted data is valid 
     if form.is_valid(): 
      #add to cart and redirect to cart page 
      cart.add_band_to_cart(request) 
      # if test cookie worked, get rid of it 
      if request.session.test_cookie_worked(): 
       request.session.delete_test_cookie() 
      url = urlresolvers.reverse('show_cart') 
      return HttpResponseRedirect(url) 
    else: 
     # it's a GET, create the unbound form. Note request as a kwarg 
     band_form = BandAddToCartForm(request=request, label_suffix=':') 

     # set the test cookie on our first GET request 
     request.session.set_test_cookie() 
     return render_to_response("catalog/custom_watches.html", 
            locals(), 
            context_instance=RequestContext(request)) 

最後,這裏是形式沒有模板的相關位以顯示:

{% for b in bands %} 
    <div class="watch_list_item"> 
     <img class="" src="{{ MEDIA_URL }}images/bands/thumbnails/{{ b.image }}" alt="{{ b.name }}" /> 
     <div class="watch_form_area"> 
      <p>{{ b.name }}</p> 
      <form method="post" action="." class="cart">{% csrf_token %} 
       {{ band_form.as_p }} 
       <input type="submit" value="Add To Cart" name="add_product" alt="Add To Cart" class="add_to_cart_button" id="add_only_product" /> 
      </form> 
     </div> 
    </div> 
{% endfor %} 

添加到購物車按鈕顯示爲它應該,但長度選擇器完全無法顯示。有任何想法嗎?

回答

1

第一

return render_to_response(template_name, 
          locals(), 
          context_instance=RequestContext(request)) 

總是發生已經初始化表單之前,刪除它,它應該工作。

+1

很難感覺更愚蠢。 – fildred13 2013-04-29 22:23:27