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