繁体   English   中英

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

[英]Django not seeing Users in database?

我有一个数据库,并启用了管理界面。 当我进入管理界面并单击“用户”时,有一个用户的用户名是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视图来管理我的用户。 当我进入航站楼做

$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视图。 在我的网络浏览器中,我转到

127.0.0.1/user/ayman/

urls.py应该捕获ayman并将其作为参数传递给user_page ,对吗? 确实可以,但是user_page视图不断出现404错误,并显示ayman not found 因此, user_pageusername参数实际上是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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM