2011-06-29 11 views
2

私は、render_to_response関数を使ってhtmlテンプレートに渡したいデータがあります。だから一般的に私は次のようなことをします:ビューに余分な引数を渡す方法は、DjangoのURLとして機能しますか?

return render_to_response('template.html', {'arg1':arg1,'arg2': arg2}, context_instance=RequestContext(request)) 

しかし、私はこのページにつながるリンクを作成したいと思います。引数は何年か、数字または単一の単語のようなグラフを生成するために使用されるデータのリストではなく、小さいですので、私は彼らがこのような名前のパターンでURLに表示されないようにする:

urlpatterns = patterns('', 
    url(r'^archive/(\d{4})/$', archive 
) 

がありますビュー関数の余分な引数を渡して、URLに余分な引数を表示せずにURLリンクを生成する方法はありますか?

私はすでにあなたがこの

urlpatterns = patterns('blog.views', 
    (r'^blog/(?P<year>\d{4})/$', 'year_archive', {'foo': 'bar'}), 
) 

のような追加の引数を渡すことができることを知っている。しかし、私は、引数は、彼らが一定で滞在しないとすることで、データを生成しているhardcoded-したくないので、それは私が欲しいものではありませんその他のコード。

要約: render_to_responseをクリックするだけで、リンクを作成するにはどうすればよいですか?

+1

URLにURLを渡したいのですが、URLに*表示*したくないのですか? –

+0

私はページのリンクを生成したいので、POSTデータのようなものは動作します。ただし、私は既にデータを持っているので、実際のフォームは必要ありません。これは結果リストのための個々のリンク用です。 – Atma

答えて

0

つのオプション:

  1. あなたがURL内の任意のデータをしたくない場合は、POSTリクエストとアクセスを送信することができ、それはrequest.POSTを使用して、POSTリクエストのthe relevant docs.欠点は、ブラウザが警告することです参照あなたはページをリフレッシュすることができます。リンクするのは難しいです。

  2. より良いアプローチは、必要なすべてのデータを保持するモデルを作成することです。

    例えば

:次に

class Data(models.Model): 
    data1 = models.IntegerField() 
    data2 = models.IntegerField() 
    data3 = models.IntegerField() 

POSTリクエストからのすべてのデータを取り、/dataview/1のように見えるURLを生成つのビューを持っています。そうすれば、Dataモデルからデータを取得するために使用できるURLがありますが、URLにエンコードされたデータはありません。

関連する問題