【问题标题】:Querying the Sqlite database for a user with username "x" using the standard django.contrib.auth.models.User model使用标准 django.contrib.auth.models.User 模型为用户名“x”的用户查询 Sqlite 数据库
【发布时间】:2017-09-21 09:06:06
【问题描述】:

我正在努力解决我遇到的问题。

我想向用户展示一个页面,他们可以在其中通过输入用户名来查找用户。

但我不知道该怎么做。我是否在我的视图中提供一个函数来执行从数据库中检索用户的查询?例如检索他的用户名或 ID 并转到他的个人资料页面?我似乎无法掌握如何做到这一点,我一直在寻找这方面的例子,但我找不到任何东西,所以我希望这里的人能帮助我!

【问题讨论】:

    标签: python django sqlite django-models django-views


    【解决方案1】:

    是的,在最简单的级别上,您将拥有一个接受表单提交的视图,该表单提交接受字段的值并执行类似User.objects.get(username=my_variable) 的操作并返回结果(如果有)。您应该将调用包装在 try/ except 块中,这样如果不存在使用该用户名的此类用户,您的视图就不会爆炸。 Django 提供了shortcut function for doing just this,因此您可以使用user = get_object_or_404(User, username=my_variable) 代替上面的行。你的整个视图看起来像

    from django.shortcuts import render, get_object_or_404
    
    def username_search(request):
      # if there are any form values sent in a GET
      if request.GET:
        my_variable = request.GET.get('username', '')
        user = get_object_or_404(User, username=my_variable)
      else:
        user = None
      return render(request, 'some_template.html', {'user': user}
    

    实际上,您还可以创建一个 Django form 来对提交的内容进行一些验证,从而更轻松地呈现您的表单。

    【讨论】:

    • 嗨,汤姆,感谢您的评论。我已经接受它作为正确答案,因为它回答了我最初的问题。但是,我可能问的问题太简单了。如果您愿意,我将在 cmets 中尝试解释情况以及我正在尝试做的事情。用户可以在其中查找用户的页面 - 但是对于他选择的每个用户,表单都会被清除,因此他也可以查找其他用户,然后当他提交表单时,所有选定的用户都会传递到下一页。如何尝试实现这一目标?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2019-07-22
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多