从 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)
因此并没有真正考虑到主键。
这是我的脚本:
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)
因此并没有真正考虑到主键。