Django的。在引号内,引号内使用url标记

时间:2014-05-24 06:43:13

标签: django url tags escaping quotes

我想将此变量传递给上下文并呈现它,它包含html标记。

notificacion_string = "<a href = \"{% url \'perfiles:perfil\' actor.usuario.username  \'recientes\' %}\" > %s </a> voted on your post" % (notificacion.actor.usuario.username)

如您所见,我已尝试转义href =“”中的引号。但是我得到了这个错误:

%u format: a number is required, not unicode

所以,我想当评估“%url ..”%()时会发生错误。我尝试过很多事情都没有成功。

额外信息:

网址“pefiles:perfil”收到两个论点:

 url(r'^(?P<username>\w+)/(?P<queryset>\w+)/$',views.perfil, name='perfil'),

参数是用户名和查询集,第一个来自notificacion.actor.usuario.username,第二个是字符串'recientes'。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

没有必要逃避任何引用。用于评估模板标记内的代码的上下文与周围的HTML完全分开,因此它们不会干扰。

答案 1 :(得分:1)

在视图中生成URL

from django.core.urlresolvers import reverse

# Generate the URL using the Django urlresolver reverse
url = reverse('perfiles:perfil', kwargs={'username': actor.usuario.username, 'queryset': 'recientes' })

# Then concatenate the URL as other string argument
notificacion_string = "<a href ='%s'> %s </a> voted on your post" % (url, notificacion.actor.usuario.username)

检查Django URLresolvers

在模板中生成URL(HTML)

<a href = "{% url 'perfiles:perfil' actor.usuario.username  'recientes' %}" >{{notificacion.actor.usuario.username}}</a> voted on your post"

在jQuery中生成URL

<script>
    // Generate an URL with a fake username
    var url = "{% url 'perfiles:perfil' 'FakeUsername'  'recientes' %}"

    // Let's supose we received an AJAX response with a variable username
    username = response['username']

    // Replace the string 'FakeUsername' for the real one
    url = url.replace('FakeUsername', username)
</script>

官方的Django文档说得很清楚,所以我建议你检查一下Django URLresolvers