我正在创建一个股票投资组合应用程序。用户有一个股票列表,每个股票都有一个看起来像“ http://127.0.0.1:8000/search/symbol=TSLA”的链接。我想做的是将股票代码“ TSLA”传递到我的一个视图中,然后只需在下一页上打印该字符串即可(目前)。
到目前为止,我所做的(没有在下面的代码中包括它)只是在我的SearchPageView
中有一个名为get_symbol
的方法,我试图从那里和我的URL中获取url。 search.html
模板,我尝试通过{{ view.get_symbol }}
访问它。但这什么也没显示。
我的设置:
views.py:
class SearchPageView(TemplateView):
template_name = 'search.html'
urls.py:
from django.urls import path, re_path
from .views import SearchPageView
urlpatterns = [
path('search/<string>', SearchPageView.as_view(), name='search_stock'),
]
search.html:
{% extends 'base.html' %}
{% block content %}
{% endblock content %}
我知道上面没有什么,我要问的是如何将字符串“ TSLA”传递到我的视图,然后传递给“ search.html”,然后我可以做我需要做的事情。感谢您的帮助。
答案 0 :(得分:1)
以此更改您的urls.py
path('search/<symbol>', SearchPageView.as_view(), name='search_stock'),
在views.py
from django.shortcuts import get_object_or_404
from django.views.generic import ListView
class SearchPageView(ListView):
template_name = 'your_template.html'
def get_queryset(self):
self.publisher = get_object_or_404(YOUR_MODEL_NAME, name=self.kwargs['symbol'])
return YOUR_MODEL_NAME.objects.filter(symbol=self.symbol)
我认为您的模型字段名称为symbol
。
答案 1 :(得分:0)
您可以尝试这样:
from django.shortcuts import render
def page_view(request):
# recheck how to get data you want pass in html from this view
return render(request, 'search.html', {
'symbol': request.DATA.get('symbol'),
})
,并在url中更改为此:
urlpatterns = [
path('search/<string>', page_view, name='search_stock'),
]
,在search.html
中,您将拥有{{ symbol }}
中的def page_view
变量