在 Django 中使用 URL 作为 URL 参数
Using a URL as a URL parameter in Django
在我的 模型 中,我有以下内容:
class Content(models.Model):
address = models.URLField(unique=True)
在我的 urls 中,我有这个模式:
url(r'^content_detail/(?P<address>[a-zA-Z-_./:0-9-_+=?;~@#%^&*(){}|`<>]+)/$', views.content_detail),
是的,说真的,这就是我使用的模式。基本上,我看了一下URL中可以使用的所有字符,并制作了图案。现在,我的问题是,它会起作用吗?它在我的测试中运行良好,但我不是正则表达式专家。有什么办法可以改善这个?如果可能的话,任何人都可以给我一个 URLs 的 django url 特定的正则表达式吗?非常感谢。
我认为您已经在 URL 中添加了所有可能的符号、字母和数字。
url(r'^content_detail/(?P<address>.*)/$', views.content_detail),
这允许您 URL 中的所有字符。
您的正则表达式将无法处理包含 Unicode 字符的 IDN(国际化域名)。我认为最简单的方法是在 .+
上进行匹配,如 Aswin Kumar KP 在他的回答中所写,然后使用 Django 的 URLValidator 验证捕获的模式。您可以在该验证程序的源代码中找到 Django 的 URL 正则表达式:URLValidator
在我的 模型 中,我有以下内容:
class Content(models.Model):
address = models.URLField(unique=True)
在我的 urls 中,我有这个模式:
url(r'^content_detail/(?P<address>[a-zA-Z-_./:0-9-_+=?;~@#%^&*(){}|`<>]+)/$', views.content_detail),
是的,说真的,这就是我使用的模式。基本上,我看了一下URL中可以使用的所有字符,并制作了图案。现在,我的问题是,它会起作用吗?它在我的测试中运行良好,但我不是正则表达式专家。有什么办法可以改善这个?如果可能的话,任何人都可以给我一个 URLs 的 django url 特定的正则表达式吗?非常感谢。
我认为您已经在 URL 中添加了所有可能的符号、字母和数字。
url(r'^content_detail/(?P<address>.*)/$', views.content_detail),
这允许您 URL 中的所有字符。
您的正则表达式将无法处理包含 Unicode 字符的 IDN(国际化域名)。我认为最简单的方法是在 .+
上进行匹配,如 Aswin Kumar KP 在他的回答中所写,然后使用 Django 的 URLValidator 验证捕获的模式。您可以在该验证程序的源代码中找到 Django 的 URL 正则表达式:URLValidator