当我尝试使用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(或段塞)。