简体   繁体   中英

Add dynamic content

After a new article is posted (in a form via Ajax) on my Django news site, I want to return a link to the article.

To do so, I'm using a Template object that says:

if form.is_valid():
     form.instance.user = request.user
     new_article = form.save()
     success = Template('<div id="panel_input" class="col-lg-4"> <h2 class="text-center"> Success </h2> <p class="text-center"> Your Article has been posted. You can see and edit details by clicking <a href="{% url "article_manager:article" %}/{{ article_id }}">here</a>. </p></div>')
     context = Context({"article_id" : new_article.pk})
     return HttpResponse(success.render(context))

The urlsConf for this looks like:

...
 url(r'^article/(?P<article_id>\d+)/$', views.article, name='article'),
...

The problem is that I get an error because of {% url "article_manager:article" %}/{{ article_id }} . Apparently, I must pass the article_id inside the previous tag, since the urlsConf requires the id parameter.

But I also get an error when I put the second tag inside the first, like this:

{% url "article_manager:article" {{ article_id }} %}

I'm not sure how to accomplish this task, it doesn't seem to work with the tools I have. Does anyone have any suggestions?

Try {% url "article_manager:article" article_id=article_id %}

Maybe a little more explanation is needed: You were calling the template tag right {% url "namespace:name" %} . Remember that some templatetags can take arguments, in the *args, **kwargs form. The args can be any simple expression understood by the template language, including a context variable (no need to add double-braces). The kwargs follow the same rule, and have the form argument=expression . Thus, you can call some template tags with the form {% tag "exp" 1 request number=5 username=user.name %}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM