如何在 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 更好的(许多)原因之一。
我正在开发 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 更好的(许多)原因之一。