我正在尝试将url调用替换为以下变量:
href="{% url 'educators:pay_patient' 9 %}".replace(/9/, x)
值x只是模型的主键,即x = 1,2,3等。
我的问题是,x的位数和它要替换的位数似乎必须匹配。例如,x = 1适用于9,但不适用于90。
如果x = 1,
href="{% url 'educators:pay_patient' 90 %}".replace(/90/, x)
产生404错误
Request URL: http://127.0.0.1:8000/educators/study/pay/90/
如何使该方案适用于x的任何位数?
编辑:根据要求,我与该视图匹配的网址格式为:
path('educators/', include(([
path('study/pay/<int:pk>/', educators.PayPatientView.as_view(), name='pay_patient')
答案 0 :(得分:2)
您可以使用replace
的回调函数根据匹配长度分配值。
let href="{% url 'educators:pay_patient' 9010325%}"
let op = href.replace(/\d+/, function(match){
return new Array(match.length).fill(0).map((e,i)=>i+1).join('')
})
console.log(op)
这只是一个基于您提供的输入添加的示例,您可以根据需要替换正则表达式。或者您可以指定有关您的网址格式的更多详细信息。
答案 1 :(得分:0)
来自django-url官方文档link,我们可以将变量分配为url args,对于您来说,可以是
urlpatterns = [
path('/educators/study/pay/<int:pk>/', your_view, name=your_view_name),
...
]
,在views.py中,您可以使用额外的pk变量作为参数。