gpt4 book ai didi

python-3.x - Django 将 isbn10 传递给 url

转载 作者:行者123 更新时间:2023-12-04 09:36:46 24 4
gpt4 key购买 nike

我似乎无法将 isbn10 数字传递给 Django。

    <a href="{% url 'books-to-detail' fic.isbn %}">
<section class="slideshow-fiction">
<img src="{{ fic.image }}" alt="" />
<p>{{ fic.title|truncatewords:4 }}</p>
<!-- <p>{{ fic.description }}</p> -->
<p>{{ fic.author }}</p>
<!-- <p>{{ fic.isbn }}</p> -->
</section>
</a>
数字的示例是 059318808X 和 0316539562。我尝试使用 re_path 和正则表达式,但是如果我让一个数字通过另一个则不会。这是我尝试过的路径之一,但 0316539562 没有通过。
re_path(
r"^redirect/books/(?P<isbn>[0-9]*[-| ][0-9]*[-| ][0-9]*[-| ][0-9]*[-| ][0-9]*\w)/$",
redirect_books_to_detail,
name="books-to-detail",
),
错误
here
尝试这个网址路径
re_path(
r"^redirect/books/(?P<isbn>[\w\+%_& ]+)/$",
redirect_books_to_detail,
name="books-to-detail",
),
我现在得到一个错误,有 seen here

最佳答案

您用来识别 ISBN 编号的正则表达式部分看起来有点过于复杂。
ISBN10 由 10 个字符组成。其中9个应该是数字,最后一个可以是数字或X特点。表示这个的正则表达式类似于 \d{9}[\dX][0-9]{9}[0-9X]您可以使用 python 解释器快速测试这是否匹配:

>>> import re

>>> re.fullmatch(r"\d{9}[\dX]", "059318808X") # returns a match
<_sre.SRE_Match object; span=(0, 10), match='059318808X'>

>>> re.fullmatch(r"\d{9}[\dX]", "123X") # does not return a match

>>> re.fullmatch(r"\d{9}[\dX]", "0316539562") # returns a match
<_sre.SRE_Match object; span=(0, 10), match='0316539562'>

>>> re.fullmatch(r"\d{9}[\dX]", "03165395629999") # does not return a match

所以你传递给 re_path 的路径应该是这样的 r"^redirect/books/(?P<isbn>\d{9}[\dX])/$"如果您决定接受包含破折号的 ISBN,您需要将正则表达式更改为类似 (\d-?){9}[\dX] 的内容。这意味着我们期待 9 位数字,其中任何一个都可能(但不是强制性的)后跟一个破折号,然后是最后一个数字-或-X。

关于python-3.x - Django 将 isbn10 传递给 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62540432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com