2016-03-23 19 views
1

Kullanıcıdan bir girdi alan bir form oluşturdum, girdiye dayalı bir sorgu oluşturuyorum ve sorgunun sonuçlarını bir değişkene data.
data değişkenindeki verileri görüntüleyen bir sayfa (display.html) oluşturmak istiyorum.
Display.html ile eşlemek için URL'yi nasıl tanımlamalıyım?
Display.html için ayrı bir görünüm tanımlamam gerekir mi? Varsa, data değişkenini yeni görünüme nasıl geçirebilirim?
Bunu başarmak için doğru yöntem nedir?
Bu benim views.py dosya, DisplayForm fonksiyon formu ve girişForm aracılığıyla girdiye dayalı sorgu oluşturma ve sonucu görüntüleme

def displayform(request,user_pk): 
    user=User.objects.get(id=user_pk) 
    if request.user.is_active and request.user.id==user.id: 
     if request.user.is_authenticated(): 
      if request.POST: 
       form=InpurDateForDisplay(request.POST) 
       if form.is_valid(): 
        dd=form.cleaned_data['dd'] 
        mm=form.cleaned_data['mm'] 
        yy=form.cleaned_data['yy'] 
        data=user.link_set.filter(date=datetime.date(day=dd,month=mm,year=yy)) 
        return render_to_response('app1/display.html',{'data':data,}) 
      else: 
       form=InpurDateForDisplay() 
      return render(request,'app1/displayform.html',{'form':form,}) 
    else: 
     return render(request,'app1/error.html') 
+0

Sorunuz net değil. Bir görünümün yalnızca bir URL'ye ihtiyacı vardır. Tam olarak sorunun var mı? –

+0

Çıkış sayfası (display.html) için url yazılırken, URL'yi hangi görünümle eşleştirmeliyim? –

+0

Sorunu çözdüm, bir DateTimeField alan türü kullanıyordum ve sorgum bir DateField alan türü sağlıyordu. Hatayı URL haritalama sorunuyla karıştırdım. Şimdi ben senin noktası aldım, display.html için farklı bir url'ye ihtiyacım yok, formun oluşturulduğu bir görünüm içinde zaten var. Teşekkürler :) –

cevap

0

Django kolları Zaman tabanlı içeriği görüntülemek için jenerik görüşlerin bir kümesi vardır: Generic date views.

Modellerde herhangi bir değişiklik yapmıyorsanız, döndürdüğünüz sonuçları filtrelemek için GET parametrelerini kullanmalısınız. gibi

şey:

def displayform(request, user_pk): 
    user=User.objects.get(id=user_pk) 
    if request.user.is_active and request.user.id==user.id: 
     if request.user.is_authenticated(): 
      date = request.GET.get('date', None) 
      links = user.link_set.all() 
      if date: 
       date = datetime.datetime.strptime(date, <your date format>).date() 
       links = links.filter(date=date) 
      return render_to_response('app1/display.html',{'data':links, 
              'form': InpurDateForDisplay()}) 

    else: 
     return render(request,'app1/error.html') 
+0

Bu karışıklıktan çıktıktan sonra genel tarih görünümlerini inceleyeceğim. Teşekkürler :) –

İlgili konular