视图中的Django模板标签

Cem*_*kam 9 django django-templates

嗨,我需要通过Ajax刷新我的自定义模板标签--right_side.py--.有没有办法在视图中导入模板标签并将其作为HttpResponse返回,因为我不想放弃我的自定义模板标签(它在其他页面中工作得很好),也没有编写一个与它真正相似的新视图操作.

有一个链接用Ajax调用或在视图里面加载它

if request.isAjax():

对我来说都很好.

Cem*_*kam 10

我发现用ajax刷新区域时非常有用.所以认为分享它会很好:

首先,导入在视图文件中编码的自定义模板标记.

from your_app_name.templatetags import your_tag_name 
Run Code Online (Sandbox Code Playgroud)

然后你像这样使用它:

return HttpResponse(your_tag_name.your_method(context))
Run Code Online (Sandbox Code Playgroud)

这对我有用,我得到了模板标签作为服务器的响应,并用该结果刷新了div.

  • 如果templatetag是inclus_tag,则这不起作用. (5认同)

Dav*_*Lam 10

前一段时间我有同样的问题,我正在使用AJAX加载HTML片段,我已经将其作为模板标签编写.我试图避免在两个地方重复代码.

这就是我从视图中渲染模板标记(通过ajax调用)的方法:

from django.template import RequestContext, Template

def myview(req):
   context = RequestContext({'somearg':"FooBarBaz"})

   template_string = """
      {% load my_tag from tagsandfilters %}
      {% my_tag somearg %}
   """

   t = Template(template_string)
   return HttpResponse(t.render(context))
Run Code Online (Sandbox Code Playgroud)

  • 需要使上下文成为RequestContext.`context = RequestContext(request,{....})` (7认同)