Django:使用整数变量替换部分网址

时间:2019-02-10 04:47:45

标签: javascript python django

我正在尝试将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')

2 个答案:

答案 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变量作为参数。