在呈现新页面之前,如何将参数从URL传递到视图?

2024-09-29 17:15:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个股票组合应用程序。用户有一个股票列表,每个股票都有一个类似于http://127.0.0.1:8000/search/symbol=TSLA的链接。我想做的是将股票符号'TSLA'传递给我的一个视图,然后在下一页打印该字符串(目前)

到目前为止,我所做的(没有将其包含在下面的代码中)只是在我的SearchPageView中有一个名为get_symbol的方法,我尝试从那里获取url,在我的search.html模板中,我尝试通过{{ view.get_symbol }}访问它。但这没有显示任何东西

我的设置:

视图.py:

class SearchPageView(TemplateView):
    template_name = 'search.html'

url.py:

from django.urls import path, re_path
from .views import SearchPageView

urlpatterns = [
    path('search/<string>', SearchPageView.as_view(), name='search_stock'),
]

搜索.html:

{% extends 'base.html' %}

{% block content %}
{% endblock content %}

我知道上面什么都没有,我所要求的只是如何将字符串“TSLA”传递给我的视图,然后再传递给“search.html”,然后我就可以用它做我需要做的事情了。谢谢你的帮助


Tags: path字符串namefrompyview视图url
2条回答

您可以这样尝试:

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中,将有来自def page_view{{ symbol }}变量

用这个改变你的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

相关问题 更多 >

    热门问题