2016-10-03 2 views
-1

Я представляю кучу сообщений на странице, где пользователь может просматривать списки и нажимать на один из них и отправлять их на «страницу одиночных игр» для получения дополнительной информации о любом продукте, который они нажали. Этот метод работает для каждой ссылки EXCEPT для первой.Почему эта ссылка не работает ...?

В любое время я нажимаю на первую ссылку на эту страницу, я получаю Не найдено: Запрашиваемый URL-адрес не был найден на сервере. Если вы указали URL вручную, проверьте правильность написания и повторите попытку. ошибка.

Логика у меня в месте для HMTL/дзиндзя есть (все закрыто должным образом, я резки немного ненужного кода для краткости):

{% set i = 0 %} 
    {% for row in data %} 
     {% set i = i + 1 %} 

         <a href="/iLike/{{ i }}"> 
           <li>content</li> 
         </a> 

и мой питон код:

@app.route('/iLike/<int:num>', methods=['GET','POST']) 
def single2(num): 
    try: 
    loc = session.get('loc') 
    transType = session.get('transType') 
    data = singlesQuery() 


    return render_template('single.html', loc=loc,transType=transType,data=data[num-1]) 
except Exception as e: 
    return (str(e)) 
+0

В jinja2 уже существует 'loop.index', вам не нужно« устанавливать i'. – Soviut

+0

Что показывает URL-адрес при наведении курсора на ссылку? – Soviut

+0

, используя локальный хост, а затем показывает url/iLike/1/@Soviut – user3344239

ответ

2

Нет необходимости создавать URL-адреса вручную. Лучший способ это использовать колбу встроенного в функции url_for:

{{url_for('single2', num=i)}} 

Там также нет необходимости расчета i вручную, Becaue есть встроенный loop.index и loop.index0:

{% for row in data %} 
    <a href="{{url_for('single2', num=loop.index)}}"> 

Я считаю, это всегда должно создавать действительный URL.

+0

Все еще получаю ошибку на самой первой ссылке. хмм. @zvone Я перешел ко второму предложению. – user3344239

+0

@ user3344239 Я предложил трейлинг-косу в комментариях;) В любом случае, у вас все еще есть конечная косая черта с этим кодом здесь? – zvone

+0

Я не предлагал завершать косую черту. Это правильный ответ. Вы должны использовать 'url_for()', поскольку он будет правильно форматировать ваши URL-адреса без завершающей косой черты. – Soviut

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