2016-01-13 77 views
0

我想在阅读视图后返回到特定的网页位置(跳转到页内锚点)。换句话说,在views.py,我想这样做:Django渲染带锚

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 %} 

我会警惕这样做,如果锚来自用户的输入。您不希望恶意用户能够将您重定向到其他域。我认为模板中的硬编码'#'应该可以防止浏览器被重定向到不同的域,但我不确定。