如何在 Django 应用程序中将变量呈现为模板

How to render variable to template in Django app

我正在开发 Django 应用程序。

我想将变量“q_word”从此views.py

渲染到模板
class DbList(ListView):
    model = TestEu
    paginate_by = 10

    def get_queryset(self):
        q_word = self.request.GET.get('query')

        if q_word:
            sql = 'select * from test_eu'
            sql += " where eng_discription ~ '.*" + q_word +".*'" 
            object_list = TestEu.objects.raw(sql)
            return object_list

因为“get_queryset”函数应用“self”作为第一个参数

def get_queryset(self):

我不知道如何应用下面的代码来渲染。

return render(request, 'detail.html', {'q_word': q_word})

这不会被 q_word传递给模板。如果您需要访问权限,您可以使用:

{{ <b>view.request.GET.</b>query }}

或者您可以将其传递给上下文:

class DbList(ListView):
    model = TestEu
    paginate_by = 10

    def get_context_data(self, *args, **kwargs):
        return super().get_context_data(
            *args,
            <b>q_word=self.request.GET.get('query')</b>,
            **kwargs
        )

    def get_queryset(self):
        q_word = self.request.GET.get('query')

        if q_word:
            sql = 'select * from test_eu'
            sql += " where eng_discription ~ '.*" + q_word +".*'" 
            object_list = TestEu.objects.raw(sql)
            return object_list

请注意,您进行的查询易受 SQL injection [wiki] 攻击。这是使用 Django ORM 更好的(许多)原​​因之一。