2016-04-07 26 views
0

this suggestionの文字列パラメータをクラスベースのビューに渡してみましたが、動作していないようです。Django:文字列パラメータをクラスベースのビューに渡すことができません

URL:

url(r'^chart/(?P<chart_name>\w+)/$', 
     ChartView.as_view(chart_name='chart_name'), name="chart_url"), 

ビュー:

class ChartView(View): 
    template_name = "chart.html" 
    chart_name = None 

    def post(self, request, *args, **kwargs): 
     form = DatesForm(request.POST) 
     context = { 
      'form': form 
     } 
     return render(request, self.template_name, context) 

    def get(self, request, *args, **kwargs): 
     print("test") 
     form = DatesForm() 
     # fetch plot data (default values used) 
     context = { 
      'form': form, 
      'chart_name': self.chart_name 
     } 
     return render(request, self.template_name, context) 

ビューにリダイレクトすることになっているリンク:

<a href="{% url 'chartboard:chart_url' chart_name='lords' %}">Sometext</a> 

(名前空間に与えられた 'chartboard'プロジェクトのurlconf)。

エラー:その価値は、 "テスト" はコンソール出力に重複して印刷する内容については

NoReverseMatch at /chart/lords/ 
Reverse for 'chart_url' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['chart/(?P<chart_name>\\w+)/$'] 

(なぜ?)のUbuntu 14.04上ジャンゴ1.8.11とPython 3.4.3を使用して

0.04

+1

トレースバックにエラーの原因となっている行が表示されていますか? 'chart_name = 'lords'がエラーメッセージと一致しないので、あなたが投稿したリンクではないと思います。 – Alasdair

+0

@Alasdairあなたが正しいですね!私はこのURLをテンプレートの別の場所にパラメータなしで使用しているため、特定のエラー – pkaramol

+0

問題を解決できましたか?そうでない場合は、失敗している行を投稿します。 – Alasdair

答えて

0

あなたはchart_namekwargsを使用してアクセスする必要があります

# urls.py 
url(r'^chart/(?P<chart_name>\w+)/$', 
    ChartView.as_view(), name="chart_url"), 

# and then in the view 

class ChartView(View): 
    template_name = "chart.html" 

    def get(self, request, *args, **kwargs): 
     form = DatesForm() 
     context = { 
      'form': form, 
      'chart_name': kwargs['chart_name'] # here you access the chart_name 
     } 
     return render(request, self.template_name, context) 

あなたがこれを実装すると考えている投稿は、変数がテンプレートで利用可能であることを確認するためのもので、contextに設定してテンプレートレンダリングに渡すことで気にします。

ここで直面している問題は、URLパターンで定義されているnamed groupにアクセスすることです。

URLにアクセスしようとしたときにdjangoがリクエストを処理する方法については、documentationです。

関連する問題