【问题标题】:Django calling a function that returns a value doesn't workDjango调用返回值的函数不起作用
【发布时间】:2010-07-10 19:16:38
【问题描述】:

我在调用从另一个函数返回结果的函数时遇到问题

为了明确,我的功能是:

def calculate_questions_vote(request):
    useranswer = Answer.objects.filter (answer_by = request.user)
    positive_votes = VoteUpAnswer.objects.filter(answer = useranswer)
    negative_votes = VoteDownAnswer.objects.filter(answer = useranswer)
    question_vote_rank = sum(positive_votes) - sum(negative_votes.count)
        return question_vote_rank

def calculate_replies(request):
    the_new = News.objects.filter(created_by = request.user)
    reply = Reply.objects.filter(reply_to = the_new)
    reply_rank = sum(reply)
        return reply_rank

我想在另一个函数中调用它们,以便它可以返回一个值。 我正在从另一个函数中调用函数,如下所示:

rank = calculate_questions_vote

假设我现在只想显示函数calculate_questions_vote 返回的值。 当然,我将 rank 变量放在函数的上下文中。

我的问题是我的输出是:

<function calculate_questions_vote at 0x9420144>

我怎样才能真正让它显示函数返回的值,而不是那个字符串?

【问题讨论】:

    标签: django function return call


    【解决方案1】:

    这是基本的 Python。您所做的只是引用函数-将函数本身分配给另一个变量。要真正调用一个函数,你需要在它的名字后面加上括号:

    calculate_questions_vote()
    

    在您的情况下,您已将该函数定义为需要 request 对象,因此您还需要在调用中使用它:

    calculate_questions_vote(request)
    

    【讨论】:

    • 这样,我的新错误是:'instancemethod' 对象不可迭代,尽管在模板中我将其称为 {{rank}} - 没有迭代
    • 哦,你说得对,我的新问题最终是另一个问题的主题。这就是我应该调用该函数的方式,现在我必须弄清楚我应该如何调用calculate_function_vote(我猜它实际上返回了多个值,这是我错误的原因 - antway,我对python比较陌生: ) ) 非常感谢您的回答!
    【解决方案2】:

    您需要将请求对象传递给calculate_questions_vote,例如:

    rank = calculate_questions_vote(request)
    

    【讨论】:

    • 现在我的新错误是:'instancemethod' 对象不可迭代(尽管在我的模板中我称其为简单 {{rank}})它会是什么?
    猜你喜欢
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多