0

サインアウト ビューがあり、ユーザーが正常にサインアウトしたときに、「サインアウトしました!」という jQuery 関数を実行したいと考えています。トーストポップアップで。Django ビューから jQuery 関数を呼び出すにはどうすればよいですか。ここから jQuery コードを取得しました: http://shawntabai.com/wp/2011/09/06/toast-notifications-using-jquery/

VIEWS.PY:

def signout(request):
    logout(request)
    return HttpResponseRedirect(reverse(index))

私のヘッダーに保存されているjQuery関数:

<head>
<script type="text/javascript">
    function toast(sMessage)
{
    var container = $(document.createElement("div"));
    container.addClass("toast");

    var message = $(document.createElement("div"));
    message.addClass("message");
    message.text(sMessage);
    message.appendTo(container);

    container.appendTo(document.body);

    container.delay(100).fadeIn("slow", function()
    {
        $(this).delay(2000).fadeOut("slow", function()
        {
            $(this).remove();
        });
    });
}
</script>
<head>

私はこのようなことをすることができます:

def signout(request): 
    logout(request) 
    return HttpResponseRedirect(reverse(index, "$(document).ready(function(){toast('test');});"))
4

4 に答える 4

2

代わりに Django メッセージを使用することをお勧めします - https://docs.djangoproject.com/en/dev/ref/contrib/messages/

テンプレートに「メッセージ」が入力されているかどうかを確認し、トースト通知を表示できます。

于 2012-08-03T20:36:31.360 に答える
1

これを script タグに追加します。

$(document).ready(function(){
  toast("test");
});
于 2012-08-03T19:43:13.247 に答える
0

回答:2つの回答を組み合わせて、回答を得ました。

  1. ここのヘッダーでjQueryプラグインを使用しますhttp://shawntabai.com/wp/2011/09/06/toast-notifications-using-jquery/
  2. djangoメッセージフレームワークを使用する:https ://docs.djangoproject.com/en/1.4/ref/contrib/messages/
  3. {{message}}をjQueryスクリプトにプラグインします。

VIEW.PY

def signout(request):
    logout(request)
    messages.add_message(request, messages.INFO, 'Signout Successful.')
    return HttpResponseRedirect(reverse(index))

INDEX.html

{% if messages %}
    {% for message in messages %}
        <script type="text/javascript">
            $(document).ready(function(){toast("{{ message }}");});
        </script>
    {% endfor %}
{% endif %}
于 2012-08-06T21:28:20.237 に答える
0

残念ながら、私は JQuery を知らないので、これはより疑似コード的/プロトタイプ的になりますが、これが最善の方法です。(JQuery ユーザーの方は、実際の JQuery で自由に修正してください)

ログアウト リンクで、AJAX リクエストをビューに実行するイベント ハンドラーを追加します。

$('a').click(function() {
   Ajax.send('/path/to/logout/', {
      onSuccess: function(response) {
         toast(response.responseText, function() {
             window.location = '/path/to/index/';
         });
      },
      onFailure: function(response) {
         toast(response.responseText);
      }
   });
})

に 2 番目の引数を追加したことに注意してくださいtoast()。toast を次のように変更します。

function toast(sMessage, action)
{
    var container = $(document.createElement("div"));
    container.addClass("toast");

    var message = $(document.createElement("div"));
    message.addClass("message");
    message.text(sMessage);
    message.appendTo(container);

    container.appendTo(document.body);

    container.delay(100).fadeIn("slow", function()
    {
        $(this).delay(2000).fadeOut("slow", function()
        {
            $(this).remove();
            if (action) action();
        });
    });
}

最後に、ビュー:

def signout(request):
    if logout(request):
        return HttpResponse('You have successfully logged out!')
    else:
        return HttpResponseBadRequest('There was an error logging out.')
于 2012-08-03T20:48:45.107 に答える