Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与用户返回相关的模型的Django Listview;“无用户”;错误_Django - Fatal编程技术网

与用户返回相关的模型的Django Listview;“无用户”;错误

与用户返回相关的模型的Django Listview;“无用户”;错误,django,Django,我正在尝试生成一个用户地址列表,以便用户可以查看、更新、删除等 目前,我使用的ListView具有: class AddressListView(LoginRequiredMixin, ListView): model = Address def get_object(self): return self.model.objects.get(user=self.request.user.pk) 使用地址模型: class Address(models.Mode

我正在尝试生成一个用户地址列表,以便用户可以查看、更新、删除等

目前,我使用的ListView具有:

class AddressListView(LoginRequiredMixin, ListView):
    model = Address

    def get_object(self):
        return self.model.objects.get(user=self.request.user.pk)
使用地址模型:

class Address(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    house_name = models.CharField(max_length=255, null=True)
    house_number = models.CharField(max_length=255, null=True)
    street_name = models.CharField(max_length=255, null=True)
    .......
以及url模式:

....
url(
    regex=r'^address/$',
    view=views.AddressListView.as_view(),
    name='address_list'
),
...
但是,当我尝试请求该视图时,我得到一个错误“未找到页面(404),未找到与查询匹配的用户”

错误是:

因为您正在编写列表视图,所以应该重写
get\u queryset
(返回对象的查询集),而不是
get\u object
(返回单个对象)

其次,您得到的是404,因为错误的视图正在处理请求。Django使用第一个匹配的URL模式,在本例中,
address/
由regex
r'^(?P[\w.@+]+])/$
匹配,因此Django尝试查找用户名为“address”的用户


您可以通过将
地址\u列表
URL模式移动到
详细信息
URL模式上方来解决此问题,但如果将来有一个用户名为“address”的用户,这将阻止您查看
详细信息
页面。另一个选项是更改一个或两个正则表达式,使它们不会冲突,例如
r'^(?P[\w.@+-]++)/detail/'

从查询中删除

.pk
,Django会自动为您执行此操作

return self.model.objects.get(user=self.request.user)
或者向
用户添加
\u id

return self.model.objects.get(user_id=self.request.user.pk)        

说得好,谢谢,但是在做了这些修改后,我仍然会得到相同的错误。我不知道你会怎么得到这个错误。您确定视图正在处理该请求吗?上面是否有其他模式匹配?谢谢,这正是问题所在,Django试图找到用户名为“address”的用户,请显示完整的错误消息。奇怪的是,UserDetailView引发了错误,但它有url模式:
url(regex=r'^(?P[\w.@+-]+)/$,view=views.UserDetailView.as_view(),name='detail'),
return self.model.objects.get(user_id=self.request.user.pk)