python - Django 在数据库中看不到用户?

标签 python django django-models django-views django-generic-views

我有一个数据库并启用了管理界面。当我进入管理界面并单击“用户”时,有一个用户的用户名是ayman。我正在遵循一本名为“Packt Publishing,学习使用 Django 进行网站开发”的书中完成的教程。现在,在我的 urls.py 中,这就是我所拥有的。

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', main_page),
    url(r'^user/(\w+)/$', user_page), 
)

在我的views.py中,这是我的user_page

def user_page(request, username):

    try:
        user = User.objects.get(username=username)
    except:
        raise Http404(username +' not found.')

    bookmarks = user.bookmark_set.all()
    variables = {
        'username': username,
        'bookmarks': bookmarks
    }

    return render(request, 'user_page.html', variables)

我正在使用通用User View 来管理我的用户。当我进入终端并执行

$python manage.py shell

然后做

>>> from django.contrib.auth.models import User
>>> from bookmarks.models import *
>>> user = User.objects.get(id=1)
>>> user
<User: ayman>
>>> user.username
u'ayman'

如您所见,用户名ayman确实存在。现在,回到 URL 和 user_page View 。在我的网络浏览器中,我访问了

127.0.0.1/user/ayman/

urls.py 应该捕获 ayman 并将其作为参数传递给 user_page,对吗?确实如此,但 user_page View 不断引发 404 错误,并显示 ayman not found。因此,user_page 中的 username 参数实际上是 ayman,但它始终失败

user = User.objects.get(username=username)

即使ayman是我数据库中的用户名。知道为什么吗?

最佳答案

您使用的是裸 except 子句,请尝试 except User.DoesNotExist 。裸露的 except 掩盖了真正的错误,即缺少导入。顺便提一句。还有一个快捷方式:

from django.shortcuts import get_object_or_404
# ...
user = get_object_or_404(User, username=username)

第一个参数是模型或查询集,以下全部作为关键字参数传递给 queryset.get()

关于python - Django 在数据库中看不到用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20940486/

相关文章:

python - 快速求解数值方程

python - 无法从我的对象中提取日期

python - Django:将模型字段值写入另一个模型下拉列表?

python - Django一对一反向关系DoesNotExist

python - 将文本文件中的项目添加到 pyQt5 中的 QlistWidget

python - "from __future__ import..."对最新版本的 Python 有影响吗?

python - 在 Scipy 中使用 Pandas 数据框

Django 模型 : Aggregate Sum over multiple foreign key field values

django - 使用 systemD 服务在带有 gunicorn + django 的 Nginx 服务器中设置 2 个站点

django - 如何在 Django 中制作主从模型/屏幕?