我正在尝试这样做:
<script>
$(document).ready(function() {
$(".delete_button").click(function() {
var id = $(this).attr('id');
$.ajax({
type: "POST",
url: "/accounts/{{ request.user.username }}/profile_listview",
data: { entryname:id },
success: function(response){
alert(response.success);
}
});
return false;
});
});
</script>
但我需要找到一个传递动态URL的解决方案,因为Django模板变量在这种情况下不起作用。我怎么能做到这一点?
答案 0 :(得分:3)
如果您需要传递的变量始终相同(如request.user.username
对于一个用户将始终相同),您可以渲染一个javascript对象,其中包含您构建网址所需的所有选项。
<script type="text/javascript">
var __MYAPP_CONFIG__ = {
username: JSON.stringify({{ request.user.username }})
};
</script>
然后,在您的脚本中,您可以通过访问my_app.username
来获取动态部分。
$.ajax({
# ...
url: "/accounts/" + window.__MYAPP_CONFIG__.username + "/profile_listview",
# ...
});
我喜欢这种方法的是它(在我看来)为随时间增长的项目提供了相当通用的结构。对于足够大的网站,我最终会得到一个配置对象,其结构类似my_project.my_app1.options
,my_project.my_app2.options
等。这样,所有可能需要它的应用程序都是命名空间,我有一个中心位置知道找到我的选择。
答案 1 :(得分:3)
也许您可以使用html5的数据属性,例如:
<a class="delete_button" ... data-url="{% url 'my_url_name' username=request.user.username %}">Delete</a>
这样,更干嘛。
然后,在脚本中,您将该数据用作要发布到的URL:
$.ajax({
type: "POST",
url: $(this).data('url'),
data: { entryname:id },
success: function(response){
alert(response.success);
}
});