【问题标题】:How do I resolve Django takes no arguments error I get when I plug in external api to project如何解决将外部 api 插入项目时出现的 Django 不带参数错误
【发布时间】:2021-06-27 21:40:50
【问题描述】:

总的来说,我对 Django 和 Python 有点陌生

我正在尝试使用外部 API(alpacas 获取帐户)并将结果返回为 json /rest

我在一个没有 Django 的简单 python 项目中测试了代码,它运行良好,但是当我将它插入 Django 时,我得到了不带参数的错误

编写代码并运行后,当我在邮递员中调用 API 时,我看到不接受参数错误

查看下面的错误详情

Django 版本:3.1.5 异常类型:TypeError 异常值:
AccountView() 没有参数

Internal Server Error: /alpaca/v1/alpaca_account/
Traceback (most recent call last):
  File "/Users/xxxx/PycharmProjects/xxxx/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/Users/xxxx/PycharmProjects/xxxx/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
TypeError: AlpacaAccountView() takes no arguments
[27/Jun/2021 21:24:12] "GET /alpaca/v1/alpaca_account/ HTTP/1.1" 500 56001

老实说,我不知道这个错误在说什么

请帮我解决这个问题

在下面查看我的代码

查看

import requests, json

from .config import *

BASE_URL = BASE_URL
ACCOUNT_URL = "{}/v2/account".format(BASE_URL)
ORDERS_URL = "{}/v2/orders".format(BASE_URL)
HEADERS = {'APCA-API-KEY-ID': API_KEY, 'APCA-API-SECRET-KEY': SECRET_KEY}


# Create your views here.
class AccountView:
    def get_account(self):
        r = requests.get(ACCOUNT_URL, headers=HEADERS)

        return json.loads(r.content)

查看 urls.py

from django.urls import path, include

from AlpacaTrade.views import *

urlpatterns = [
    path('v1/alpaca_account/', AccountView),
]

models.py

from django.db import models


# Create your models here.

class AlpacaAccount(models.Model):
    symbol = models.CharField(max_length=200)
    qty = models.CharField(max_length=200)
    notional = models.CharField(max_length=200)
    side = models.CharField(max_length=200)
    type = models.CharField(max_length=200)
    time_in_force = models.CharField(max_length=200)
    limit_price = models.CharField(max_length=200)
    stop_price = models.CharField(max_length=200)
    trail_price = models.CharField(max_length=200)
    trail_percent = models.CharField(max_length=200)
    extended_hours = models.CharField(max_length=200)
    client_order_id = models.CharField(max_length=200)
    order_class = models.CharField(max_length=200)
    take_profit = models.CharField(max_length=200)
    stop_loss = models.CharField(max_length=200)
    status = models.CharField(max_length=200)
    limit = models.CharField(max_length=200)
    after = models.CharField(max_length=200)
    until = models.CharField(max_length=200)
    direction = models.CharField(max_length=200)
    nested = models.BooleanField(default=0)
    symbols = models.CharField(max_length=200)
    user_id = models.CharField(max_length=200)

【问题讨论】:

    标签: python json django


    【解决方案1】:

    尝试使用基于函数的视图。

    我不确定这是否 100% 有效,因为我没有对其进行测试,但这是一个好的开始。

    views.py

    import requests, json
    from django.http import JsonResponse
    from .config import *
    
    BASE_URL = BASE_URL
    ACCOUNT_URL = "{}/v2/account".format(BASE_URL)
    ORDERS_URL = "{}/v2/orders".format(BASE_URL)
    HEADERS = {'APCA-API-KEY-ID': API_KEY, 'APCA-API-SECRET-KEY': SECRET_KEY}
    
    
    def get_account(request):
        r = requests.get(ACCOUNT_URL, headers=HEADERS)
    
        return JsonResponse(r.content, safe=False)
    

    urls.py

    from django.urls import path, include
    
    from AlpacaTrade.views import *
    
    urlpatterns = [
        path('v1/alpaca_account/', get_account),
    ]
    

    【讨论】:

    • :( 遗憾的是,我遇到了一个新错误 请帮助查看下面的错误 raise TypeError(f'Object of type {o.__class__.__name__} ' TypeError: Object of type bytes is not JSON serializable
    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2019-10-20
    • 2016-01-27
    • 2021-01-27
    • 1970-01-01
    相关资源
    最近更新 更多