Django 使用 URL 参数在基于类的视图中查询数据库

Posted

技术标签:

【中文标题】Django 使用 URL 参数在基于类的视图中查询数据库【英文标题】:Django using URL parameters to query database in class-based view 【发布时间】:2019-03-14 20:06:32 【问题描述】:

我有一个表单,提交后会转到结果页面,例如:

appname/results/?make=BMW

我想使用 URL 参数来查询数据库并在该页面上显示结果。

这是我目前的代码:

观看次数

class SearchView(FormView):

    template_name = 'carproject/search.html'

    def get(self, request, *args, **kwargs):
        form = AdvancedSearch(self.request.GET or None)
        context = 'form': form
        if form.is_valid():
            return render(request, 'carproject/results.html')
        else:
            return render(request, self.template_name, context)

class ResultsView(TemplateView):
    template_name = 'carproject/results.html'

    def get_queryset(self, request, *args, **kwargs):
        make = self.request.GET.get('make')
        results = Vehicles.objects.filter(makename__icontains='make')
        context = 'results': results

        return render(request, self.template_name, context)

HTML

<table>
% for item in results%
                <tr>
                    <td>item.makename</td>
                    <td>item.model</td>
                    <td>item.seriesname</td>
                    <td>item.seatingcapacity</td>
                    <td>item.pricenew</td>
                </tr>
                % endfor %
</table>

【问题讨论】:

【参考方案1】:

我不知道问题是什么,但你应该改变

results = Vehicles.objects.filter(makename__icontains='make')

results = Vehicles.objects.filter(makename__icontains=make)

'make' -> make

【讨论】:

以上是关于Django 使用 URL 参数在基于类的视图中查询数据库的主要内容,如果未能解决你的问题,请参考以下文章

django url如何使用问号? (基于类的视图)

Django:将其转换为 DetailView - 使用来自 URL 的两个参数的视图函数

Django:将字符串参数传递给基于类的视图不起作用

如何正确地将参数传递给基于类的视图测试 Django Rest Framework?

Django 基于类的视图上的 success_url 的反向抱怨循环导入

基于 Django 类的视图的反向 url