django-если шаблон не работает должным образом

#python #django

#python #django

Вопрос:

У меня есть список станций, и я должен отображать станции с «start». start и stop содержат идентификаторы станций. Я пытаюсь таким образом, но когда я запускаю все, что я получаю, это пустая страница. showtrain.html :-

  <table>
 <tr>
  {% for st in st_list %}
    {% if  st.station_id >= start %}
    <td> {{ st.station_id }} </td>
    {% endif %}
  {% endfor %}
</tr>
</table>
  

внутри if ничего не работает, кроме условий типа {% if start %} . я знаю, что мне не хватает чего-то тривиального. Пожалуйста, помогите мне разобраться. я использую django 1.6.
редактировать: views.py-

 def runtrain(request):
    if request.method == 'POST':
        #request.post.get method retrieves user input from a form
            start = request.POST.get('start', None)
        stop = request.POST.get('stop', None)
        rid = request.session.get('route_id')
        stlist = SequenceTable.objects.filter(route_id = rid)
        #print start
        data2 = {
                "start" : start,
                "stop" : stop,
                "st_list" : stlist,

            }
    return render(request,"showtrain.html",data2)
  

models.py-

  class SequenceTable(models.Model):
        id = models.AutoField( primary_key=True )
        route_id = models.ForeignKey( route, on_delete=models.CASCADE)
        station_id = models.ForeignKey(Stations, on_delete=models.CASCADE)
        sequence_no = models.IntegerField( null=True )

        #def __str__(self):
        #   return self.sequence_no
class Stations(models.Model):
    station_id = models.AutoField( primary_key=True )
    station = models.CharField( max_length=20 )
    station_code = models.CharField( max_length=10 )
  def __str__(self):
        return self.station_code
  

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

1. Вы пробовали печатать элементы st_list , чтобы убедиться, что вы правильно возвращаете данные?

2. #rofls да, все записи st_list печатаются, когда я полностью удаляю шаблон if

3. сначала выполните for if логику and в представлениях и отладку с помощью инструкции print и проверьте все значения в терминале с помощью print.

4. У нас недостаточно информации, чтобы ответить на ваш вопрос. Код выглядит нормально, поэтому проблема может быть в ваших данных… у нас нет данных, которые вы используете для выполнения представления, и, следовательно, мы не можем определить, соответствует ли фактический результат вашим ожиданиям или нет. Кроме того: вместо того, чтобы говорить «он возвращает пустую страницу», вы можете опубликовать фактический исходный код, который обязательно должен содержать что- то , даже если ничего не отображается.

5. Start — это строка, а station_id — это int. pass "start": int(start) вместо этого.

Ответ №1:

как заявил RemcoGerlich, проблема заключается в несоответствующем типе данных. значение start, возвращаемое из формы, имеет строковый тип, а station_id — целое число. if не может их сравнить, и, следовательно, элемент управления не вводит операторы if, поэтому ничего не печатается