Python 如何通过uuid检索对象';在Django
当我的模型是uuid表示时,我想通过它的pk字段访问它。我在这个地址上发现了一个年龄错误404Python 如何通过uuid检索对象';在Django,python,django,Python,Django,当我的模型是uuid表示时,我想通过它的pk字段访问它。我在这个地址上发现了一个年龄错误404` 我有这个配置 def get_box(request, pk): """ Retrieve the object """ box = get_object_or_404(Box, pk=pk) return render( request, 'boxes/box.html', {'bo
`
我有这个配置
def get_box(request, pk):
"""
Retrieve the object
"""
box = get_object_or_404(Box, pk=pk)
return render(
request,
'boxes/box.html',
{'box':box}
)
还有我的模特
@python_2_unicode_compatible
class Box(models.Model):
"""
Box model
"""
def __str__(self):
return self.title
id = models.UUIDField(primary_key=True,
default=uuid.uuid4, editable=False)
title = models.CharField(max_length=40, blank=True, null=True)
和我的URL.py
...
url(r'^box/(?P<pk>[0-9A-Za-z]+)/$', views.get_box, name='box'),
...
。。。
url(r'^box/(?P[0-9A-Za-z]+)/$”,views.get_box,name='box'),
...
问题不在于查询,而在于URL。正则表达式仅与字母数字字符匹配,但uuid也包含破折号;您应该在模式中包括以下内容:
r'^box/(?P<pk>[0-9A-Fa-f-]+)/$'
r'^box/(?P[0-9A-Fa-f-]+)/$”
(请注意,字符只能是a到f,不能是a到z)。错误是什么?没有反向匹配?@Sayse no我有此错误
当前URL box/6d99a390-5a8a-41e6-8fbf-84a2bb7a8e0f与任何一个都不匹配。