четверг, 5 мая 2011 г.

Обработка html страниц и взаимодействие с представлениями



   Для работы с html страницей, использовалось представление показанное ниже.
   views.py:

#импорт библиотеки, для поиска в БД по нескольким критериям.
from django.db.models import Q

#представление, использует в качестве дополнительного значение id, аналогично
этому

def picture(request, id):
    subjects=[]

    #берем значения из БД
    user = User.objects.get(id=id)
   data = Data.objects.get( name=id)
   
   #берем типы изображений
   subj = ImgSubj.objects.all()

    for subj in subj:
       if Image.objects.filter(Q(user=id)& Q(tip_foto=subj)):
            subjects +=[subj]


   if request.method == 'POST':
      #тип изображения
      #береться значение нажатой кнопки с name="tip"
      tipimg = request.POST.get('tip')

      #выбираем из БД изображения, определенного типа, и определенного пользователя
      if ImageSubj.objects.filter(subject=tipimg):
           imagesubjects = ImageSubjects.objects.get(subject=tipimg)
           img = Image.objects.filter(Q(tip_foto=imagesubjects)& Q(user=id))
      else:
           img= Image.objects.filter(user=id)

    #создаем словарь с выбранными значениями
    context = {'user': user,
                     'data': data,
                      'subjects': subjects}

   context.update(csrf(request))

   #передаем значения на указанную страницу  
   usersearch = render_to_string('user.html', context)

   #вывод форм и информации на базовую страницу
   return render_to_response('search/base_index.html', {'usersearch': usersearch},  context_instance=RequestContext(request))

  Далее представлен файл user.html:

<form method="post">


{% if data.sername %}-если значение взято из БД, то будет отображаться
<div class="block1"> <div>

  Фамилия: <b>{{data.sername}}</b> - отображение взятых значений из БД
</div>
<div>
  Имя: <b>{{data.name}}</b>
</div>
<div>
  {% if data.ssername %}
  Отчество: <b>{{ data.lastname }}</b>
{% endif %}
</div>
<div>
  {% if data.databorn %}
  Дата рождения: <b>{{ data.databorn }}</b>
{% endif %}
</div>
 
  
<input name="tip" class="large blue awesome" style="width: 220px; margin: 2px 2px;" type="submit" value="Кнопка"> - отображение кнопки

  {% for subj in subjects %} - цикл для отображения кноаок, соответствующих типам изображений

<input name="tip" class="large blue awesome" style="width: 220px; margin: 2px 2px; "   type="submit"      value="{{ subj }}">

{% endfor %}
   
}

</form>

Комментариев нет:

Отправить комментарий