首页 > 解决方案 > Python:赋值前引用

问题描述

我收到以下错误local variable 'ticket_reservation_expired' referenced before assignment。任何人都知道如何解决这个问题?

我认为一个解决方案可能是ticket_reservation_expired = ""在调用函数之前分配,但我想知道这是否是解决这个问题的最佳方法?

助手.py

def ticket_reservation_expired(request, timestamp_of_reservation):
    """
    * Calculate the latest possible time where tickets are still reserved.
    * Check that 'created' timestamp of reservation item is not expired.
    * If expired, error message is being generated and redirect occurs.
    """
    latest_time_before_expired = timezone.now() - timedelta(
        minutes=settings.MINUTES_TICKET_RESERVATION
    )
    if timestamp_of_reservation < latest_time_before_expired:
        messages.add_message(
            request,
            messages.ERROR,
            _("Ticket reservation is too far in the past.")
        )
        return True

视图.py

ticket_reservation_expired = ticket_reservation_expired(
    self.timestamp_of_reservation
)
if ticket_reservation_expired:
    return redirect(
        'events:detail',
        organizer=self.organizer,
        event=self.event,
    )

标签: pythondjango

解决方案


您的函数仅在满足特定条件时返回一个值。如果不满足,则不返回任何内容。好的风格是要么永远不返回一个值,要么总是返回一个。因为如果满足条件,则返回 True,当不满足条件时返回 False,并且您的错误应该消失。

此外,在您发布的代码中,您将变量和函数命名为相同,这将给您带来无穷无尽的麻烦。


推荐阅读