Django 错误URL重定向

Django 错误URL重定向,django,django-urls,Django,Django Urls,URL.py: url(r'^book/(?P<booktitle>[\w\._-]+)/(?P<bookeditor>[\w\._-]+)/(?P<bookpages>[\w\._-]+)/(?P<bookid>[\d\._-]+)/$', 'book.views.book', name="book"), 因此,每本书的URL如下所示: example.com/book/the-bible/gesu-crist/938/12/ 我希望如果u

URL.py:

url(r'^book/(?P<booktitle>[\w\._-]+)/(?P<bookeditor>[\w\._-]+)/(?P<bookpages>[\w\._-]+)/(?P<bookid>[\d\._-]+)/$', 'book.views.book', name="book"), 

因此,每本书的URL如下所示:

example.com/book/the-bible/gesu-crist/938/12/

我希望如果url中有错误,那么我可以通过在url末尾使用book.id重定向到真正的url

例如,如果我转到:

example.com/book/A-bible/gesu-crist/938/12/

然后我将被重定向到:

example.com/book/the-bible/gesu-crist/938/12/

但如果我转到错误的url,我将得到以下错误:

TypeError at /book/A-bible/gesu-crist/938/12/

%d format: a number is required, not unicode

如果使用%s,则会出现以下错误:

*页面重定向不正确Firefox检测到服务器正在以一种永远无法完成的方式重定向对此地址的请求。*此问题有时可能是由于禁用或拒绝接受Cookie造成的*

为什么??
我必须做什么?

传递给视图的所有参数都是字符串。在使用它之前,请将其推过
int()
,或者只使用
%s

是的,只需在中替换
%i

redirect_to = "/book/%s/%s/%s/%s/%i/" % ( booktitle, bookeditor, bookpages, bookid, )

使用
%s
。不要费心将其强制转换为整数。

我使用了%s,但出现了以下错误:页面重定向不正确Firefox检测到服务器正在以一种永远无法完成的方式重定向对此地址的请求。*此问题有时可能是由于禁用或拒绝接受Cookie造成的。@xRobot:您正在运行重定向循环,这意味着此语句
if booktitle!=书。书名总是正确的。。。这可能是因为您使用的是
%(booktitle,bookeditor,bookpages,bookid,)
而不是
(book.title,book.editor,…)
我使用了%s,但我收到了以下错误:页面没有正确重定向Firefox检测到服务器正在以一种永远不会完成的方式重定向对此地址的请求。*此问题有时可能是由于禁用或拒绝接受Cookie造成的。
redirect_to = "/book/%s/%s/%s/%s/%i/" % ( booktitle, bookeditor, bookpages, bookid, )