2014-11-06 2 views
0

В методе url_for вы можете передать параметр _anchor для загрузки тега привязки при загрузке страницы.flask render_template не работает с тегом привязки # - jinja2.exceptions.TemplateNotFound

Как сделать то же самое с render_template?

Я могу

render_template('profile/index.html') 

без каких-либо проблем, но когда я добавить якорный тег в конце HTML и попытаться сделать

render_template('profile/index.html#h1") 

Я получаю шаблон не найден

jinja2.exceptions.TemplateNotFound 
TemplateNotFound: profile/index.html#h1 
+4

Что вы пытаетесь достичь? 'render_template' и' url_for' выполняют две очень разные вещи. 'render_template' берет имя загружаемого файла шаблона. '#' Не дает особого значения в этом контексте. – dirn

+0

Спасибо Dim за то, что нашли время, чтобы помочь мне. Может быть, я не буду думать об этом правильно. У меня есть страница с 3 вкладками, и у одной из них есть форма. Когда я отправляю форму, я обрабатываю ее и хочу, чтобы страница назад была открыта с той же вкладкой. Если я перенаправляю URL, я могу загрузить вкладку формы, но я потеряю записи значения формы. Установка записей формы на сеанс и отведение их назад было бы решением, но кажется немного грубым? –

+0

Хороший способ решить это как можно сделать с WT-Forms, чтобы иметь что-то вроде populate_obj. И render_template будет принимать только имя файла шаблона, и все, что связано с ссылками, должно перейти к url_for – adarsh

ответ

0

По существу, это то, что я закончил делать, я передал значение вместе с render_template

return render_template('profile/index.html', set_tab=1) 

На стороне клиента в JavaScript, я сделал следующее, чтобы настроить вкладку

<script> 
    var obj_load={% if set_tab==1%}1{%else%}0{%endif%}; 
    tab_load=(obj_load?"#h1":"#"); 

    $(document).ready(function() { 
     if(location.hash || obj_load) { 
     $('a[href=' + (location.hash || tab_load) + ']').tab('show'); 
     } 
    }); 

</script> 

FYI, им с помощью Bootstrap 3 Вкладка-панель

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