为什么路径转换器中需要 to_url() 方法?姜戈

问题描述 投票:0回答:4

为什么我需要 Django 路径转换器中的

to_url(self, value)
方法?

我在官方文档上只能找到很少的例子,无法理解这个方法的用法。

to_url() 到底做了什么?

class FourDigitYearConverter:

    regex = '[0-9]{4}'

    def to_python(self, value):
        return int(value)

    def to_url(self, value):
        return '%04d' % value
python django url
4个回答
0
投票

此方法将一个值(例如本例中的数字)转换为可在 URL 中使用的字符串,例如如果该值是整数(例如 4),则它将被格式化为“0004”。


0
投票

在 URL 反转过程中使用 Django 转换器中的

to_url(self, value)
方法,该过程涉及根据视图名称及其关联参数生成 URL。

在给定的示例中,假设您有一个使用转换器的视图,如下所示:

urlpatterns = [
    path('my-view/<FourDigitYearConverter:year>/', MyView.as_view(), name='my_view'),
]

在这种情况下,使用反向方法时将调用 to_url 方法来创建 URL,如下所示:

url = reverse('my_view', kwargs={'year': year_value})

如果您尝试对使用缺少 to_url 方法定义的转换器的路径使用反向方法,您将遇到类似于以下内容的错误:

AttributeError: 'FourDigitYearConverter' object has no attribute 'to_url'

我希望这能澄清你的问题!


-1
投票

实际上当你在 url 中放入这样的任何类型的 url 时

{% url 'post' post.id %}
此时
'post.id' first converted into the url format from python to url.

中的参数

-1
投票

据我所知,to_url() 将 URL 中的字符串之间所需的整数转换为字符串。例如 www.fb.com/id=20,name=jondoe 到 /id=20%name=jon+doe

© www.soinside.com 2019 - 2024. All rights reserved.