Django Template Tags in Views

杀马特。学长 韩版系。学妹 提交于 2019-12-18 11:56:18

问题


Hi I need to refresh my custom template tag --right_side.py-- via Ajax. Is there a way to import the template tag in the view and return it as HttpResponse because I don't want to give up my custom template tag (it works great in other pages) nor code a new view action which is really similar to it.

Having a link to call with Ajax or loading it in the view inside

if request.isAjax():

Are both fine for me.


回答1:


I find it really useful when refreshing an area with ajax. So thought it would be good to share it:

First you import the custom template tag you coded in your view file.

from your_app_name.templatetags import your_tag_name 

And then you use it like this:

return HttpResponse(your_tag_name.your_method(context))

That worked for me and I got the template tag as response from server and refreshed the div with that result.




回答2:


I had this same question awhile ago, I was loading HTML snippets with AJAX which I had already written as template tags. And I was trying to avoid duplicating the code in two places.

This is what I came up with to render a template tag from a view (called via 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))



回答3:


You could create a template just containing your templatetag and nothing else. Then you would have in right_side.html:

{%load cems_templatetags%}
{%right_side%}

and in the view something like:

if request.isAjax():
  return render_to_response('right_side.html',RequestContext(request))



回答4:


I found this solution :

from templatetags_file_name import my_templatetag
return render (request,'path/to/template.html', my_templatetag(parameter) )

And, in my "templatetags_file_name", "my_templatetag" is like that :

@register.inclusion_tag('path/to/template.html') 
def my_templatetag(parameter):
    #my operations
    return locals()


来源:https://stackoverflow.com/questions/5068272/django-template-tags-in-views

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!