有没有办法绕过“NoneType”对象没有属性“DoesNotExist”

9分钟

我试图呈现相同的页面“计费”,但根据用户是否有活动订阅而具有不同的变量。问题是当我尝试例外时,我得到 'NoneType' 对象没有属性 'DoesNotExist'。

如果成员资格为 False,我曾尝试使用:返回重定向但没有成功。

@login_required(login_url="/login")
def billing(request):
    membership = False
    cancel_at_period_end = False
    user = request.user
    pay = payment.objects.filter(user=user).last()
    if request.method == 'POST':
       stripe.api_key = settings.STRIPE_SECRET_KEY
       #attempting cancelling  subscription
       subscription = stripe.Subscription.retrieve(pay.stripe_subscription_id)
       subscription.cancel_at_period_end = True
       pay.cancel_at_period_end = True
       cancel_at_period_end = True
       pay.paid  = False
       subscription.save()
       pay.save()
       messages.success(
            request, "Thankyou, for using our services Your membership will run to the end of your billing cycle.")
    else:
        try:
            if pay.paid:
                membership = True
            if pay.cancel_at_period_end:
                cancel_at_period_end = True
        except pay.DoesNotExist:
            membership = False
    return render(request, 'billing.html',  {'membership': membership, 'pay': pay,  'cancel_at_period_end': cancel_at_period_end})
Traceback:

File "/Users/iamsuccessful/totdapp-2/totdapp/views.py" in billing
  94.             if pay.paid:

During handling of the above exception ('NoneType' object has no attribute 'paid'), another exception occurred:

File "/Users/iamsuccessful/totdapp/totdenv/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/Users/iamsuccessful/totdapp/totdenv/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/Users/iamsuccessful/totdapp/totdenv/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/iamsuccessful/totdapp/totdenv/lib/python3.7/site-packages/django/contrib/auth/decorators.py" in _wrapped_view
  21.                 return view_func(request, *args, **kwargs)

File "/Users/iamsuccessful/totdapp-2/totdapp/views.py" in billing
  98.         except pay.DoesNotExist or AttributeError:

Exception Type: AttributeError at /billing/
Exception Value: 'NoneType' object has no attribute 'DoesNotExist'

如果用户没有活动订阅,我希望重定向到 ('')(主页)。

阿拉斯代尔

从模型访问异常,例如payment.DoesNotExist

在 Python/Django 中,您应该将模型大写,例如class Payment(models.Model):. 使用小写payment会使您的代码难以阅读,并且更容易出错。

在您的回溯中,您有:

except pay.DoesNotExist or AttributeError:

这是不正确的,您应该使用要捕获的异常元组,例如:

except (payment.DoesNotExist, AttributeError):

payment.DoesNotExist or AttributeError将简化为payment.DoesNotExist,因此您永远不会遇到AttributeError.

最后,DoesNotExist当您执行Payment.objects.get(...). 你的线pay.paid永远不会提高DoesNotExist,但它可以提高AttributeError的时候payNone您可以将代码简化为:

try:
    if pay.paid:
        membership = True
    if pay.cancel_at_period_end:
        cancel_at_period_end = True
except AttributeError:
    membership = False

但是,如果你检查是否代码可能会更清晰payNone

if pay is not None:
    if pay.paid:
        membership = True
    if pay.cancel_at_period_end:
        cancel_at_period_end = True
else:
    membership = False

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法在登录时绕过.zshrc?

来自分类Dev

有没有办法以字符串开头的对象的所有属性

来自分类Dev

拥有对属性的引用,有没有办法获取对包含对象的引用?

来自分类Dev

Python - 有没有办法获取对象的所有属性

来自分类Dev

有没有办法从同一对象的方法中创建对象属性?

来自分类Dev

有没有办法复制NSObject的属性?

来自分类Dev

有没有办法清除JavaScript中的对象?

来自分类Dev

有没有办法覆盖`{}`对象?

来自分类Dev

有没有办法让numpy矩阵存储对象?

来自分类Dev

有没有办法从JSON对象移除图层?

来自分类Dev

有没有办法使地图对象重复?

来自分类Dev

有没有办法从方法中调用对象?

来自分类Dev

有没有办法使用OpenScad拉伸对象

来自分类Dev

有没有办法调整Cowplot对象的主题?

来自分类Dev

有没有办法在Dart中克隆对象?

来自分类Dev

有没有办法在Dart中克隆对象?

来自分类Dev

有没有办法动态导入Python对象?

来自分类Dev

有没有办法在Javascript中组合对象

来自分类Dev

有没有办法从js对象中删除整个属性

来自分类Dev

有没有办法在整个数组的JSON对象中填充缺少的属性?

来自分类Dev

有没有办法只显示基于数组的json对象中的选定属性

来自分类Dev

有没有办法获取JavaScript中存储在数组中的对象的属性?

来自分类Dev

有没有办法在定义之前访问对象属性?

来自分类Dev

有没有办法删除对象键和属性?

来自分类Dev

有没有办法将 v-for 中的对象属性传递给 Vue 数据?

来自分类Dev

有没有办法为本体中的对象属性定义值或状态?

来自分类Dev

有没有办法覆盖对象属性以将其变成特殊的东西

来自分类Dev

执行`git merge`命令时有没有办法绕过合并后的git钩子

来自分类Dev

有没有办法绕过Git将local_settings.py放入Heroku?

Related 相关文章

  1. 1

    有没有办法在登录时绕过.zshrc?

  2. 2

    有没有办法以字符串开头的对象的所有属性

  3. 3

    拥有对属性的引用,有没有办法获取对包含对象的引用?

  4. 4

    Python - 有没有办法获取对象的所有属性

  5. 5

    有没有办法从同一对象的方法中创建对象属性?

  6. 6

    有没有办法复制NSObject的属性?

  7. 7

    有没有办法清除JavaScript中的对象?

  8. 8

    有没有办法覆盖`{}`对象?

  9. 9

    有没有办法让numpy矩阵存储对象?

  10. 10

    有没有办法从JSON对象移除图层?

  11. 11

    有没有办法使地图对象重复?

  12. 12

    有没有办法从方法中调用对象?

  13. 13

    有没有办法使用OpenScad拉伸对象

  14. 14

    有没有办法调整Cowplot对象的主题?

  15. 15

    有没有办法在Dart中克隆对象?

  16. 16

    有没有办法在Dart中克隆对象?

  17. 17

    有没有办法动态导入Python对象?

  18. 18

    有没有办法在Javascript中组合对象

  19. 19

    有没有办法从js对象中删除整个属性

  20. 20

    有没有办法在整个数组的JSON对象中填充缺少的属性?

  21. 21

    有没有办法只显示基于数组的json对象中的选定属性

  22. 22

    有没有办法获取JavaScript中存储在数组中的对象的属性?

  23. 23

    有没有办法在定义之前访问对象属性?

  24. 24

    有没有办法删除对象键和属性?

  25. 25

    有没有办法将 v-for 中的对象属性传递给 Vue 数据?

  26. 26

    有没有办法为本体中的对象属性定义值或状态?

  27. 27

    有没有办法覆盖对象属性以将其变成特殊的东西

  28. 28

    执行`git merge`命令时有没有办法绕过合并后的git钩子

  29. 29

    有没有办法绕过Git将local_settings.py放入Heroku?

热门标签

归档