2011-01-17 20 views
1

DjangoとJavascript(私はJQueryを使用しています)の両方にかなり新しいので、私はハックをしているのか、クライアント側のデータベースIDをdjangoサーバ側に送るより滑らかな方法があるのだろうかと思います。DjangoとJavascriptの間で情報を共有するには?

bProcessingオプションを使用してAJAXを使用してデータベースからレコードを取得すると、データの行を表示するdataTable(http://datatables.net)があります。私urls.pyでのURLのようなものです:

url(r'^assets/activitylog/(?P<cid>.*)$', views.getActivityTable_ajax, name="activitylog_table"), 

と私のdataTable AJAX-relavantコードのようなものです:

Djangoのビューで使用されるjavascript関数 getIDFromHTML()グラブ <cid>
"sAjaxSource": "/assets/activitylog/" + getIDFromHTML(), 

単に:

function getIDFromHTML(){ 
    // Simply return the text in the #release_id div element from the HTML 
    return $("#release_id").html(); 
}; 

これは私にとって「ハッキー」な部分です。私は私のテンプレートコードにデータベースIDを私はdatatablesのURL(ディスプレイで:私はそれをビューに渡すことができますので、CSSではない)を使用して挿入されています。これは、コードがHTML自体に埋め込まれていない限り、JavaScriptコードでdjangoテンプレートタグを使用することができないため、ほとんどが必要です。

私が見つけた唯一の他の事はに渡されたパラメータを取り除くためにURLを変更することです:

url(r'^assets/activitylog', views.getActivityTable_ajax, name="activitylog_table"), 

とを視野にコードを変更:

以来
def getActivityTable_ajax(request): 
    """Returns the activity for a given pid from HTTP GET ajax reqest""" 

    pid = int(urlparse.urlparse(request.META['HTTP_REFERER']).path.split('/')[-1]) 
    # rest of view code here... 

私が必要とするIDはこのreferer urlの終わりです。

この方法では、隠されたデータベースIDをHTMLに埋め込み、ajax経由でテーブルの人口ビューコードを渡すことで、猿を回る必要はありません。

リクエストオブジェクトでこのようにHTTP_REFERERを使用しても問題ありませんか?私は完全に間違った方法でこれについて行きますか?

ありがとうございます!コードはHTML自体に埋め込まれていない限り1はjavascriptのコードでDjangoのテンプレートタグを使用することはできません

答えて

2

... ...

は、これは正しくありません。 <script>タグがあなたのurlconf内の何かを指すようにしてから、ビューset the Content-Type headerを適切にJavaScriptに出力して出力してください。

+0

は、「HADNそれ以前に考えたことはありません。 – Randy

0

先週、Djangoでいくつかのデータセットを設定しました。
唯一の要件は、サーバーが行を含むaaDataというJSON構造を送信することです。

ます。また、これは、より高度であり、あなたがあなたのプロジェクト(datatables.utils)にCIPYしなければならないいくつかのメソッドを持っている、基礎としてこの完全な例を使用することができます良いアイデアだ
http://www.datatables.net/development/server-side/django

+0

リンクありがとうございます。それは助けになるでしょう。 – Randy

関連する問題