如何在 Django 中个性化 URL 路径?

How can I personalize an URL path in Django?

我正在尝试建立一个呈现一些书籍和相应页面的网站。我想让访问这样的页面成为可能:

path('/<str:book_pk>-<int:book_page>/', views.TestClass.as_view(), name='book-test')

我希望用户访问它非常简单,例如:mysite.com/5-12/ - 将他重定向到第 12 页的第 5 本书。问题是当我从网站本身访问此页面时,使用href,真实路径变为:

mysite.com/%2F5-13/

如果我想在浏览器中写入以下路径:myste.com/5-13/,它会抛出 404 page not found,因为真正的路径是 mysite.com/%2F5-13/。这很明显,但我的问题是:

我怎样才能坚持我的初始路径,并使通过 myste.com/5-13/ 访问成为可能?出于某种原因,Django URL Patterns 在开头添加了一个额外的 %2F 字符串。有人可以向我解释为什么以及如何解决这个问题吗?

非常感谢您付出的时间和精力!非常感谢!

您不必在 url 的开头包含 /,只需:

path('<str:book_pk>-<int:book_page>/', views.TestClass.as_view(), name='book-test')

/ 在 url 秒内自动编码为 %2F(阅读完整列表 here