从 django 2.2 中的数据 url 获取 id 时出现问题

Problem when get id from data-url in django 2.2

这是我的脚本:

views.py

from profil.models import dayah

def index(request):
dayah = profil_dayah.objects.all
return render(request,'index.html', { 'dayah' : dayah })

index.html

{% for dayahs in dayah %}
<button type="button" class="btn btn-primary see-details" data-toggle="modal" data-target="#exampleModalLong" data-url="{% url 'details' dayahs.id %}">Detail</button>
{% endfor %}

get_id.js

$(".see-details").on('click', function (){
  var url = $(this).data('url')
  console.log(url);
})

console.log的结果应该是

/details/1

int 1 是来自 {{ dayahs.id }} 的 id 但我的真实结果是:

/details/(%3FP4%5Cd/)

为什么会有这样的结果?我希望 console.log

中的结果是 /details/1

您混合了 path(..) [Django-doc] syntax with re_path(..) [Django-doc] 语法。 path 语法不使用正则表达式,而是使用路径转换器。

因此您应该将 url 定义为:

urlpatterns = [
    path('details/<b><int:pk></b>/', views.index, name='details'),
    # …
]

现在,Django 从字面上理解您的路径,从而构建一个百分比编码的路径。如果我们对其进行百分比解码,我们会看到:

/details/(?P4\d)

因此并没有真正考虑到主键。