为什么我需要 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
此方法将一个值(例如本例中的数字)转换为可在 URL 中使用的字符串,例如如果该值是整数(例如 4),则它将被格式化为“0004”。
在 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'
我希望这能澄清你的问题!
实际上当你在 url 中放入这样的任何类型的 url 时
{% url 'post' post.id %}
此时 'post.id' first converted into the url format from python to url.
中的参数
据我所知,to_url() 将 URL 中的字符串之间所需的整数转换为字符串。例如 www.fb.com/id=20,name=jondoe 到 /id=20%name=jon+doe