Я пытаюсь выяснить, как передать данные из формы в метод представления на основе классов, который служит конечной точкой API.
Просмотр домашней страницы (есть форма для ввода тикера):
def home(request):
# data = get_stock_data('TSLA', key)
if request.method == 'POST':
form = TickerForm(request.POST)
if form.is_valid():
ticker = form.cleaned_data['ticker']
stock_data = get_stock_data(ticker, api_key)
return redirect('chart-data', ticker=ticker) # this line I am having trouble with
else:
form = TickerForm()
stock_data = None
return render(request, 'app/home.html', {'data': stock_data, 'form':form})
Представление API:
class ChartData(APIView):
authentication_classes = []
permission_classes = []
def get(self, request, ticker, format=None):
# get stock data
stock_data = get_stock_data(ticker, api_key) # how do I pass the ticker?
labels = []
default_items = []
# get label & values
for key, value in stock_data.items():
labels.append(key)
default_items.append(value['4. close'])
# prepare data
data = {
'labels': labels[::-1],
'default_items': default_items[::-1]
}
return Response(data)
urls.py
urlpatterns = [
path('', views.home, name="homepage"),
path('api/chart/data', views.ChartData.as_view(), name="chart-data"),
]
Затем я получаю данные с помощью Javascript и отображаю график на внешнем интерфейсе, который работает нормально. Единственное, что я не могу понять, как передать аргумент тикера в метод get моего представления ChartData. Я надеюсь, что моя проблема ясна.