#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, поэтому ничего не печатается