如何在django中添加警报弹出框?

时间:2017-06-14 18:08:30

标签: python django

我一直在阅读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')

除非错误消息被重定向到登录页面,否则一切正常。我已经看过人们提出的其他堆栈溢出问题,这些问题与此类似,但这些问题对我来说似乎也不起作用。有什么建议吗?

2 个答案:

答案 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代码,我正在使用本机警报。