【问题标题】:UnboundLocalError at / local variable 'user' referenced before assignmentUnboundLocalError at / local variable 'user' 在赋值之前引用
【发布时间】:2016-01-14 00:39:33
【问题描述】:

我正在使用 django-favorite,https://bitbucket.org/last_partizan/django-favorites 并尝试显示“仅获取用户的博文收藏夹”策略来获取我的收藏夹。在文档中,它说

content_type = get_object_or_404(ContentType, app_label='myblogapp', model='blogpost')
favs = Favorite.objects.favorites_for_user(user).filter(content_type=content_type)

将完成这项工作。所以在我的views.py中我添加了

def index(request):
        user = MyProfile.objects.get(username=user)

        categories = Category.objects.all()
        try:
                sort = request.GET["sort"].strip()
                sort_method = SortMethods[sort]
                page = request.GET["page"].strip()
        except KeyError:
                sort_method = SortMethods.score
                page = 1

        if sort_method == SortMethods.date:
                post_list = Post.objects.order_by("-pub_date")
        else:
                post_list = Post.objects.all()
                post_list = sorted(post_list, key=lambda x: x.get_score(), reverse=True)

        paginator = Paginator(post_list, 30)

        try:
                posts = paginator.page(page)
        except PageNotAnInteger:
                posts = paginator.page(1)
        except EmptyPage:
                posts = paginator.page(paginator.num_pages)

        content_type = get_object_or_404(ContentType, app_label='main', model='post')
        favs = Favorite.objects.favorites_for_user(user).filter(content_type=content_type)
        context = {
                "posts": posts,
                "pages": paginator.page_range,
                "sort": sort_method.name,
                "categories":categories,
                "favs":favs,

        }
        return render(request, "main/index.html", context)

为了在我的 index.html 中使用该收藏夹,我只需输入 {{fav}},我什至不确定这是调用收藏夹的正确方法。但我试过了,现在它给了我 UnboundLocalError at /

在来自`user = MyProfile.objects.get(username=user)的赋值之前引用的局部变量'user'

` 我有 userena 应用,在 userena 模型中

  class MyProfile(UserenaBaseProfile):
    user = models.OneToOneField(User,
                                unique=True,
                                verbose_name=_('user'),
                                related_name='my_profile')
    intro = models.CharField(_('intro'),
                                       max_length=5, default="Hello")

我从这里打电话来获取用户...我希望这是正确的。

【问题讨论】:

    标签: python django


    【解决方案1】:

    是否应该使用第一行:

    request.user
    

    像这样:

    user = MyProfile.objects.get(username=request.user)
    

    【讨论】:

    • 我尝试了很多东西,但使用您的解决方案我得到了 Cannot query "Profile of nick": Must be "User" instance.
    • 如何从 userena 评估用户?你知道吗?我上面有userena的模型,,,我认为这应该比我想象的要简单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多