2011-06-23 20 views
0

私はDjangoテンプレートでJqGridを使用します。グリッドに新しい行を追加するまでうまく動作します。 ナビゲーションパネルのこの「+」ボタンに使用します。問題は、「レコードの追加」ダイアログで「送信」をクリックすると、HTTP 403エラーが表示されることです。 editurl"/ ajax/stocks/add"(最後のスラッシュを削除)HTTP 500エラーが表示されます。DjangoでJqGridに行を追加する

ここに問題があることを誰かが知っていますか? ブラウザでは、http://127.0.0.1:8000/ajax/stocks/add/(django devサーバーが使用されています)へのクエリは、期待どおりにTrueを返します。

そして、私はajax_stock_add_view関数が何をすべきかを完全に理解していません。 成功ステータスまたは何か他のものを戻す必要がありますか?ここで

は私のDjangoのテンプレートです:ここで

{% block extrascript %} 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      jQuery("#stocks-grid").jqGrid(
        { url:'/ajax/stocks/', datatype: "json", colNames:['Name','Comment'], 
         colModel:[ 
          {name:'name',index:'name', editable:true}, 
          {name:'comment',index:'comment', editable:true} 
         ], 

         editurl : "/ajax/stocks/add/", rowNum:10, pager: '#stocks-grid-pager', sortname: 'name', viewrecords: true}); 
      jQuery("#stocks-grid").jqGrid('navGrid', '#stocks-grid-pager'); 
     }); 
    </script> {% endblock %} 

{% block content %} 
    <table id="stocks-grid"></table> 
    <div id="stocks-grid-pager"></div> {% endblock %} 

はurls.pyです:

... 
    (r'^ajax/stocks/$', ajax_stocks_view), 
    (r'^ajax/stocks/add/$', ajax_stocks_add_view), 
... 

とviews.py

def ajax_stocks_view(request): 
    json = get_grid_json(Stock) 
    return HttpResponse(json, mimetype='application/json') 

def ajax_stocks_add_view(request): 
    return HttpResponse(True) 

答えて

0

問題はCSRF protection in Djangoでした。 私の場合、JqGridはCSRFトークンのないフォームを作成したので、CSRF検証に失敗しました。 Hereは問題の良い解決策です。

1

それはあなたがしようとしている正確にどのように依存しますこれを設定する。

  1. ユーザーがフォームに
  2. フォームを送信する:あなたは、ユーザーが新しいアイテムがデータベースに保存され、グリッドに追加したい送信したときに、新たなアイテムを作成するためのフォームを持っている場合は、ここにあなたのプロセスです/ ajax/stocks/add/
  3. で見る/ ajax/stocks/add /データベースに項目を追加して応答を返します(実際の何らかの応答を送る必要があります)Trueは応答ではありませんしかし'[{"success":true}]'(JSON)は、適切なMIMEタイプである。)
  4. クライアントが/ AJAX /ストック/追加/ ATビューからの応答を受信します。リクエストが成功すると、JavaScriptがグリッドに追加されます。それ以外の場合はエラーが表示されます。
+0

ありがとうございます。 JqG​​ridに関してはafterSubmitイベントを使用する必要があります。 私はそれを試しましたが、イベントが呼び出されません。私がまだ解決していないHTTPエラーが原因です。 –

関連する問題