我一直在阅读django文档,但到目前为止,我所尝试的一切都没有为我工作。我试图这样做,如果用户将URL输入某个页面并且他们尚未登录,那么他们会被重定向到登录页面,这会给他们一个弹出错误消息,说明他们无法访问页面,直到他们登录。
以下是来自views.py
的一小段代码def home(request):
if request.session.test_cookie_worked():
return render(request, 'page/home.html')
else:
return render(request, 'page/login.html')
除非错误消息被重定向到登录页面,否则一切正常。我已经看过人们提出的其他堆栈溢出问题,这些问题与此类似,但这些问题对我来说似乎也不起作用。有什么建议吗?
答案 0 :(得分:1)
以下是我的表现。
首先,如果视图代码确定应该显示弹出窗口,请在上下文中使用命名标记调用render()
:
return render(request, 'page/home.html', {'some_flag': True})
然后,在页面模板中,如果设置了标志,则显示<div>
元素:
{% if some_flag %}
<div id="some_flag" title="Some Flag">
<p>Some Text Here</p>
</div>
{% endif %}
同样在页面模板的<head>
部分中,创建一个JavaScript函数以将<div>
显示为弹出对话框:
<head>
<script type="text/javascript">
$(document).ready(function() {
$(function() {
$( "#some_flag" ).dialog({
modal: true,
closeOnEscape: false,
dialogClass: "no-close",
resizable: false,
draggable: false,
width: 600,
buttons: [
{
text: "OK",
click: function() {
$( this ).dialog( "close" );
}
}
]
});
});
});
</script>
</head>
此解决方案还要求您使用jQuery库。
我确定这样做有弊端,但它对我有用。
答案 1 :(得分:0)
我们可以在上下文对象中传递变量,例如标记。
return render(request, 'index.html', {'alert_flag': True})
然后在模板中只需检查一下alert_flag。
{% if alert_flag %}
<script>alert("Some Message.")</script>
{% endif %}
这里不需要jQuery代码,我正在使用本机警报。