我的django api代碼有什麼問題

2024-06-16 14:23:39 发布

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

https://ultimatedjango.com/blog/how-to-consume-rest-apis-with-django-python-reques/

我遵循这个指南,并试图改变API与工作semrush.com网站地点。你知道吗

问题在于,与教程中不同的是,它们不会以JSON格式返回数据,但如下所示:

domain;http://domain.com/fullUrl

我安装了CSV render for rest framework并将其添加到设置中:

REST_FRAMEWORK = {
    # specifying the renderers
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework_csv.renderers.CSVRenderer',
    ),
}

这是Serializer:

class SemrushSerializer(serializers.ModelSerializer):
    class Meta:
        model = SavedSemrush

以及视图.py地址:

def save_semrush(request):

    if request.method == "POST":
        form = SubmitSemrush(request.POST)
        if form.is_valid():
            keyword = form.cleaned_data['keyword']            
            r = requests.get('http://api.semrush.com/?type=phrase_organic&key=' + settings.SEMRUSH_KEY + '&display_limit=10&export_columns=Dn,Ur&phrase=' + keyword + '&database=us')

            serializer = SemrushSerializer(data=r)
            if serializer.is_valid():
                serializer.save()


    else:
        form = SubmitSemrush()        

因为在提交表单之后,它只是重新加载(不向orm添加数据),所以我只能猜测,要么序列化程序对于这种数据类型是错误的,要么我在视图中搞乱了简单的代码:)

有什么想法吗? 干杯


Tags: 数据formcomresthttpifrequestdomain
1条回答
网友
1楼 · 发布于 2024-06-16 14:23:39

您正试图用Request对象实例化SemrushSerializer。你知道吗

你需要传递JSON数据。你知道吗

r = requests.get(
    'http://api.semrush.com/?type=phrase_organic&key={key}&'
    'display_limit=10&export_columns=Dn,Ur&phrase={keyword}&'
    'database=us'.format(
    key=settings.SEMRUSH_KEY,
    keyword=keyword
)
json = r.json()
serializer = SemrushSerializer(data=json)

相关问题 更多 >