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

2024-05-23 13:54:28 发布

您现在位置:Python中文网/ 问答频道 /正文

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

一切正常,除了错误消息没有弹出,如果他们被重定向到登录页面。我看过其他类似的堆积如山的问题,但这些问题似乎对我也不起作用。有什么建议吗?


Tags: django用户文档消息urlhomereturnrequest
2条回答

我们可以像传递标志一样在上下文对象中传递变量。

return render(request, 'index.html', {'alert_flag': True})

然后在模板中简单地检查alert_标志。

{% if alert_flag %}
    <script>alert("Some Message.")</script>  
{% endif %}

这里不需要jQuery代码,我使用的是本机警报。

我就是这么做的。

首先,如果视图代码确定应该显示弹出窗口,请在上下文中使用命名标志调用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库。

我相信这样做是有缺点的,但对我有效。

相关问题 更多 >