调用同一类中的函数

2024-04-18 11:50:08 发布

您现在位置:Python中文网/ 问答频道 /正文

调用同一类中的函数-Django

我很困惑。你知道吗

我的项目做不到这一点。你知道吗

但是,它只能在单独的python文件中工作。你知道吗

你知道吗视图.py你知道吗

from .lib.rest import Rest

    class AssinaturaUpdate():
        ...
        def post(self, request, id):
            assinatura = Assinatura.objects.filter(id=id).first()
            form = FormAssinatura(request.POST)
            if form.is_valid():
                Rest.update.(self, data=form.cleaned_data, assinatura_id=assinatura.id)
            return redirect('assinatura_edit', id=id)

你知道吗休息.py你知道吗

class Rest():  

    def trocaPlano(self, assinatura_id):
        payload = {
            "id": assinatura_id
        }
        print(payload)

    def update(self, data, assinatura_id):

        self.trocaPlano(assinatura_id=assinatura_id)  

        headers = {"Content-Type": "application/json", "Accept": "application/json", "Authorization": TOKEN}
        r = requests.put(url='https://rest.com/subscriptions/'+assinatura_id, data=json.dumps(payload), headers=headers)
    ...

'AssinaturaUpdate' object has no attribute 'trocaPlano'


Tags: pyselfformrestidjsondatadef
1条回答
网友
1楼 · 发布于 2024-04-18 11:50:08

在访问对象方法时,需要初始化类的实例。因此,当访问方法trocaPlanoupdate(它们将self作为方法的第一个参数,这些方法引用的是对象iteself,有点像JS中的this)的Rest类时,您需要初始化一个Rest类对象,就像使用Rest()。你知道吗

您需要像这样更新代码:

# view

from .lib.rest import Rest
from django.shortcuts import get_object_or_404

class AssinaturaUpdate():
    ...
    def post(self, request, id):
        assinatura = get_object_or_404(Assinatura, id=id)
        form = FormAssinatura(request.POST)
        if form.is_valid():
            Rest().update(form.cleaned_data, id)
        return redirect('assinatura_edit', id=id)

 # rest

class Rest():  

    def trocaPlano(self, assinatura_id):
        payload = {
            "id": assinatura_id
        }
        print(payload)

    def update(self, data, assinatura_id):

        self.trocaPlano(assinatura_id)  

        headers = {"Content-Type": "application/json", "Accept": "application/json", "Authorization": TOKEN}  # <  How this token comes here
        r = requests.put(url='https://rest.com/subscriptions/'+assinatura_id, data=json.dumps(payload), headers=headers)

相关问题 更多 >