0

リバースを使用してメソッドを呼び出していますが、理解できない問題の引数があります。私のエラー : 引数 '(35,)' とキーワード引数 '{}' を持つ 'shopping.views.payment_confirmation' のリバースが見つかりません。

私のURL:

url(r'^payment_confirmation/(?P<id>\d+\d{2\})/$', 'payment_confirmation', name='payment_confirmation'),

私の見解:

def show(request):
    ...
    ...
    payment.submit(settings.SITE_URL + reverse("shopping.views.payment_confirmation", args=[payment.id]))

私のモデル支払い:

class Payment(models.Model):
    ...
    ...
    def submit(self, redirect_url):
        '''
            Sends self as a Payment through PagSeguro API.
            Payment instance MUST BE SAVED before calling this method.
        '''

        if not self.id:
            #Temporary to identify which problem caused the crash.
            raise ValidationError

        #creating a reference if its None
        if self.reference is None:
            self.reference = configs.PAGSEGURO_REFERENCE_PREFIX + str(self.id)

        document = Document()
        document.appendChild(self.to_element(document, redirect_url))

        response = document2dict(api.submit_payment(document))

        try:
            self.code = response['checkout']['code']
            self.answered_on = datetime.datetime.now()
            self.save()
        except:
            error_str = ""
            if type(response["errors"]["error"]) != list:
                response["errors"]["error"] = [response["errors"]["error"]]
            for error in response["errors"]["error"]:
                error_payment = ErrorPayment()
                error_payment.code = int(error['code'])
                error_payment.payment = self
                error_payment.save()
                error_str += "[%s: %s]" % (error_payment.code,
                                           error_payment.get_code_display())
            raise Exception(error_str)

エラーはこちら payment.submit (settings.SITE_URL + reverse ("shopping.views.payment_confirmation", args = [payment.id])) 私は、この API を使用しています https://bitbucket.org/leonardosantos/django-pagseguro2 /

4

1 に答える 1

2

この行: reverse("shopping.views.payment_confirmation", args=[payment.id]) は、支払い ID パラメーターを受け入れるショッピング アプリの views.py ファイルで payment_confirmation と呼ばれるメソッドに一致する URL を見つけるよう Django に指示します。 .

あなたが共有したエラーでは、payment.id は 35 でした。エラーは、shopping.views に payment_confirmation というメソッドがないか、メソッドが単一の int をパラメーターとして受け入れないことを示しています。

ビュー ファイルで payment_confirmation メソッドを共有しなかったため、それが問題のようです。以下を追加する必要があります。

def payment_confirmation(payment_id):
 #do stuff

あなたの意見に。

于 2013-10-17T23:36:39.413 に答える