首先,用户名的 url 规则:
url(r'^(?P<username>[-\w]+)/$', 'membership.views.profile', name='profile'),
确保用户名不与现有的 url 规则冲突有点困难。
我通常处理这个问题的方法是为 url 添加唯一性:
url(r'^user/(?P<username>[-\w]+)/$', 'membership.views.profile', name='profile'),
如果您绝对必须让配置文件的 url 以用户名开头,那么您可以尝试使用以下方法获取 url:https ://stackoverflow.com/a/2094270/884453然后确保用户名都是唯一的针对其他用户名和路由
编辑
在我写这篇文章的时候,有人发布了一个很酷的想法,让验证器变得更有意义。
用来from django.core.urlresolvers import resolve
检查它的唯一性是一个很好的解决方案
from django.core.exceptions import ValidationError
from django.core.urlresolvers import resolve
def validate_unique_resolve(value):
urlroute = True
try:
urlroute = resolve(path, urlconf)
except urlresolvers.Resolver404:
urlroute = False
if urlroute != False :
raise ValidationError(u'%s is a reserved url pattern' % value)