2016-07-31 73 views
0

当我们在我们的java模板中有一个url标记时,它会在点击执行 {% url 'product_details' pk=soproduct.id %}并且它在超级链接中使用,目标将是完整路径,包括域和路径。如何从客户端Java脚本中执行Django uri模板标签?

<a href="{% url 'soproduct_details' pk=soproduct.id %}">{{ soproduct.id }}</a> 

和完美的作品,并产生

http://127.0.0.1:8000/production/subproduct/details/7/

但是,如果我们想用相同的模板标签内客户端的Java脚本

var destination = {% url 'product_details' pk=soproduct.id %} 

有一个问题米,这将生成将包括路径但不包括域名的链接

/生产/子产品/信息/ 7/

这可怎么解决?

UPDATE:

这是我尝试执行该脚本位于在Django模板循环。

<script> 


var currentLocation = window.location.href; 

function AddCardToTrello() { 
    Trello.addCard({ 
    url: currentLocation, 
    name: "{{ soproduct.product }}", 
    due: {{ soproduct.required_date|date:"SHORT_DATE_FORMAT" }} 
}); 
} 

    function addCardThenGo(url) { 
     AddCardToTrello(); 
     window.location.href = url; 
    } 
</script> 

,并在之后的脚本我有我的电话

<a onclick="addCardThenGo({% url 'add_to_production_board' pk=soproduct.id uri=request.build_absolute_uri %})">Add to Trello</a> 

所以脚本会在代码中重复多次的循环将用新的参数

+0

的' url'标记将始终生成相对于主机名称的url。浏览器会自动获取您网站的当前根目录来构建绝对URI。 Ajax调用应该会发生同样的情况。该调用应该与生成的相对url一起工作。 –

+0

我有同样的理解,但它只是在java脚本中使用它时不这样做 –

+0

正如文档所说:“{%url%}返回匹配给定视图的绝对路径引用(一个没有域名的URL)和可选参数...“。它没有被django完成,它是浏览器的行为。无论如何,你为什么需要那里的域名?如果你查看页面的源代码,你会发现href部分是“production/subproduct/details/7 /”,没有域名。 –

回答

1

哦,我想我它。如果您提供的代码与您使用的代码完全相同,那么您忘记了引号。它应该是这样的:

var destination = "{% url 'product_details' pk=soproduct.id %}"; 

之后,你可以这样:

window.location.href = destination; 

UPDATE

请试着这样做:

<a onclick="addCardThenGo('{% url 'add_to_production_board' pk=soproduct.id uri=request.build_absolute_uri %}')">Add to Trello</a>