2016-01-13 3 views
0

Я бы хотел вернуться к определенному местоположению веб-страницы (перейти к привязке на странице) после прочтения представления. Другими словами, в views.py, я хотел бы сделать что-то вроде:Django render with anchor

context={'form':my_form} 
return render(request, 'my_app/my_page.html/#my_anchor', context) 

Однако, мне нужен путь к файлу и не URL.

Я знаю, что могу сделать это с помощью «перенаправления» (Django redirect() with anchor (#) parameters), но мне нужно вернуть форму контекста. Есть идеи?

ответ

4

Не имеет смысла включать якорь в шаблон. Шаблон - это имя файла шаблона на диске, который визуализируется, он полностью отделен от URL-адреса.

Вы можете добавить свой якорь в контекст шаблона.

context['anchor'] = 'my_anchor' 
return render(request, 'my_app/my_page.html, context) 

Затем в вашем шаблоне вы можете изменить местоположение на якорь, используя javascript. Предполагая, что вы используете JQuery, вы можете сделать:

{% if anchor %} 
<script type='text/javascript'> 
$(document).ready(function(){ 
    window.location = '#{{ anchor }}' 
}); 
</script> 
{% endif %} 

Я бы остерегаться делать это, если якорь приходит от пользовательского ввода. Вы не хотите, чтобы злонамеренный пользователь мог перенаправить вас в другой домен. Я думаю, что hardcoding '#' в шаблоне должно помешать перенаправлению браузера в другой домен, но я не уверен.