クラスベースのビューを少し新しくした人として、私はそれらを使って、私が取り組んでいるアプリケーションでいくつかのチャートを動かすことにしました。リクエスト(ユーザー)をクラスベースのビューに渡す
しかし、私はこのチャートを動的にしたいと思っており、誰がそれを見ているかに基づいて変更したいと思います。
リクエストを(ユーザーを取得するために)クラスベースのビューに渡すにはどうすればよいですか?
以下は(ダミーデータでの作業が、何の要求が渡されていないされている)私の非稼働実装です:
ビュー:
class LineChartJSONView(BaseLineChartView, request):
user = request.user
def get_labels(self):
labels = []
items = Item.objects.filter(user = user)
for i in items:
labels.add(i.name)
return labels
def get_data(self):
prices = []
items = Item.objects.filter(user = user)
for i in items:
prices.add(i.price)
return prices
line_chart = TemplateView.as_view(template_name='dashboard/test_chart.html')
line_chart_json = LineChartJSONView.as_view()
URL:
url(r'^chart_data/$', LineChartJSONView.as_view(), name='line_chart_json'),
url(r'^chart/$', views.ViewBaseChart, name='basic_chart'),
HTML:
{% load staticfiles %}
<html>
<head>
<title>test chart</title>
</head>
<body>
<canvas id = "myChart" width="500" height="200"></canvas>
<!-- jQuery 2.2.3 -->
<script src="{% static 'plugins/jQuery/jquery-2.2.3.min.js' %}"></script>
<!-- Bootstrap 3.3.6 -->
<script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
<!-- ChartJS 1.0.1 -->
<script src="{% static 'plugins/chartjs/Chart.min.js' %}"></script>
<!-- FastClick -->
<script src="{% static 'plugins/fastclick/fastclick.js' %}"></script>
<!-- AdminLTE App -->
<script src="{% static 'dist/js/app.min.js' %}"></script>
<!-- AdminLTE for demo purposes -->
<script src="{% static 'dist/js/demo.js' %}"></script>
<!-- page script -->
<script type="text/javascript">
$.get('{% url "line_chart_json" %}', function(data)
{
var ctx =
$("#myChart").get(0).getContext("2d");
new Chart(ctx).Line(data);
});
</script>
</body>
</html>
ビュー(上記の静的ため - 非classbasedview):
def ViewBaseChart(request):
context = {}
template = "dashboard/test_chart.html"
return render(request,template,context)
私は正しくここに、クラスベースのビューの概念を使用していますわからないが、しかし、これはへの唯一の道であることがわかってきましたこれまでのチャートを実装する。
クラスメソッドの中で、 'self.request'で要求にアクセスできます –
はい。 get、post、putメソッド(またはget_objectメソッド)をオーバーライドする必要があります。ここの良いリソース:https://docs.djangoproject.com/ja/1.10/topics/class-based-views/intro/ – Corgs