Добавить динамический контент

Вопрос:

После публикации новой статьи (в форме через Ajax) на моем новостном сайте Django я хочу вернуть ссылку на статью.

Для этого я использую объект Template, который гласит:

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))

UrlsConf для этого выглядит так:

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

Проблема в том, что я получаю сообщение об ошибке из-за {% url "article_manager:article" %}/{{ article_id }}. По-видимому, я должен передать article_id внутри предыдущего тега, так как urlsConf требует параметр id.

Но я также получаю сообщение об ошибке, когда я помещаю второй тег в первый, например:

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

Я не уверен, как выполнить эту задачу, она, похоже, не работает с инструментами, которые у меня есть. У кого-нибудь есть предложения?

Лучший ответ:

Попробуйте {% url "article_manager:article" article_id=article_id %}

Может быть, потребуется немного больше объяснений: вы вызывали тег шаблона справа {% url "namespace:name" %}. Помните, что некоторые templatetags могут принимать аргументы в форме *args, **kwargs. Аргументы могут быть любым простым выражением, понимаемым языком шаблона, включая контекстную переменную (нет необходимости добавлять двойные фигурные скобки). Квадраты следуют тому же правилу и имеют форму argument=expression. Таким образом, вы можете вызвать теги шаблонов с формой {% tag "exp" 1 request number=5 username=user.name %}

Оцените статью
TechArks.Ru
Добавить комментарий