url获取django视图的参数



当我尝试使用AJAX而不是href link时,我的javascript代码面临一个问题。

我需要点击一个django url,看起来像这样(django 2.2):

path('one-time/<str:product_url>/', OneTimeProductView.as_view(), name='one_time_product')

django模板中的原始代码是:

<a href="{% url 'one_time_product' product %}">{{product}}</a>

我现在想使用ajax调用来使整个过程在一个模态中打开。在我的javascript代码中,我的fetch函数看起来像这样:

function handleAccess(){
var url = "{%  url 'one_time_product' product %}" ;
fetch(url, {
method: "POST",
headers: {
"X-CSRFToken": '{{csrf_token}}',
"Accept": "application/json",
"Content-Type": "application/json"
}
})
.then (response => {
response.json();
})
.then (data => {
console.log(data);
})
};

我知道我错过了一些与url变量中的参数相关的东西,但我只是不知道如何正确添加它,以便我适合url路径。

这是我点击

按钮时得到的错误

NoReverseMatch at/one-time/Reverse for 'one_time_product'没有找到参数。尝试了1种模式:一[' - /(术中;product_url>;[^/]+)/$']

如何在fetch函数中写入url ?

如果有人能给我指出正确的方向,我会很感激的。

感谢

这是一个棘手的问题。我用后端开发解决了这个问题。

var url = "{%  url 'one_time_product' product_url=0 %}".replace('0', {{ product }}) ;

URL定义中有一个命名参数(product_url)

在我的脑海中,你应该像这样使用url模板标签:

var url = "{%  url 'one_time_product' product_url=product.url %}" ;

product.url更改为产品模型中的实际url(或段塞)。

最新更新