2016-03-23 3 views
1

Я сформировал форму, которая принимает входные данные от пользователя, я делаю запрос на основе ввода и сохраняю результаты запроса в переменной data.
Я хочу отобразить страницу (display.html), которая отображает данные в переменной data.
Как определить URL-адрес для отображения на display.html?
Должен ли я определить отдельный вид для display.html? Если да, то как я могу передать переменную data в новое представление?
Каков правильный метод для достижения этого?
Это мой views.py файл, displayform функция обрабатывает форму и вводВыполнение запросов на основе ввода через форму и отображение результата

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

Ваш вопрос не ясен. Для просмотра требуется только один URL. Какая конкретная проблема у вас есть? –

+0

При написании URL-адрес для выходной страницы (display.html), на какой точке я должен отображать URL-адрес? –

+0

Я решил проблему, я использовал тип поля DateTimeField, и мой запрос поставлял тип поля DateField. Я путал ошибку с проблемой сопоставления URL-адресов. Теперь я получил вашу точку зрения, мне не нужен другой url для display.html, он уже отображается изнутри представления, в котором формируется форма. Спасибо :) –

ответ

0

Django имеет набор общих представлений для отображения контента на основе времени: Generic date views.

Если вы не внесете никаких изменений в модели, вы должны использовать параметры GET для фильтрации возвращаемых результатов.

Что-то вроде:

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

Я пройду через общие даты, когда я выйду из этого беспорядка. Благодаря :) –

Смежные вопросы