如何使用 jquery-ui 和 Django 创建模式登录表单

Posted

技术标签:

【中文标题】如何使用 jquery-ui 和 Django 创建模式登录表单【英文标题】:How to create modal login form using jquery-ui and Django 【发布时间】:2012-03-22 03:13:59 【问题描述】:

我正在编写一个 django web 应用程序并使用 jquery-ui 作为用户界面。我正在使用 django-registration 来处理用户注册。

基本上,我想要做的不是有一个单独的登录页面,而是我希望登录页面成为一个模式对话框,以便您单击一个链接,如果您需要登录,一个弹出窗口出现,您可以从那里登录。对于这一部分,我使用jquery-ui modal form,基本上只是显示一个通常隐藏的登录表单。

但是,如果页面的 url 看起来像这样,我只能让它工作:

url(r'^$',
        auth_views.login,
        'template_name': 'index.html'),

因为我希望在用户想要做一些需要登录的事情时弹出登录模式窗口,所以我需要在多个页面上使用它。但我不想让所有的网址都像上面那样。

我在网站上看到了另一个解决该问题的问题:Django authentication and Ajax - URLs that require login 但我不完全理解答案。我对 Django 和 javascript 还很陌生,所以想知道是否有人可以提供更多指导?

这是表单的“index.html”部分:

<div id="dialog-form" title="LOGIN">    
        <form method="post" action="?next= next|default:"/" ">
        % csrf_token %
        <dl>
        <dt><label for="id_username">Username:</label>% if form.username.errors % <span class="error"> form.username.errors|join:", " </span>% endif %</dt>
        <dd> form.username </dd>
        <dt><label for="id_password">Password:</label>% if form.password.errors % <span class="error"> form.password.errors|join:", " </span>% endif %</dt>
        <dd> form.password </dd>
        <dt><input type="submit" value="Log in" /></dt>
        </dl>
        </form> 
    </div>
    <button id="login">LOGIN</button>

这是javascript:

<script>
$(function() 

    $( "#dialog-form" ).dialog(
        autoOpen: false,
        height: 500,
        width: 550,
        modal: true,
        buttons: 
            Close: function() 
                $( this ).dialog( "close" );
            
        ,
        close: function() 
            allFields.val( "" ).removeClass( "ui-state-error" );
        
    );

    $( "#login" ).click(function() 
            $( "#dialog-form" ).dialog( "open" );
        );
);
</script>

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

登录模态框可以使用jqueryui;我已经用过了。检查这个http://jsfiddle.net/paragr/LNBEY/ 但是你为什么不试试这个https://github.com/kylefox/jquery-modal 或http://www.bitrepository.com/ajax-login-modal-box.html

【讨论】:

【参考方案2】:

这不是一个完整的答案,因为我以前从未这样做过,但是:你希望表单将发布请求数据发送到 auth_views.login - 所以你应该将表单操作设置为此地址 + 一些将重定向的下一个数据u 成功登录后。我想查看 django auth soruce 可能会有所帮助。在 djangosites.org 上,您可以找到带有源代码的项目,例如 https://github.com/znc-sistemas/python-people - 每个页面上都有一个登录表单示例 - 它没有隐藏,但没关系。作者使用上下文处理器将登录表单放入每个请求上下文数据中。我相信阅读代码可以帮助你。

【讨论】:

以上是关于如何使用 jquery-ui 和 Django 创建模式登录表单的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 NPM 同时获得 JQuery-UI 和 datepicker 本地化?

如何使用 webpack 添加 jquery-ui css/图像

如何将 jquery datepicker 从模板传递到 python Django 中查看?

如何在 Rails 6 项目中包含 jquery-ui?

jquery-ui 和 webpack,如何将其管理到模块中?

如何将 jquery-ui 与 nodejs 一起使用?