我如何把数据从api到django

jgovgodb  于 2022-11-18  发布在  Go
关注(0)|答案(2)|浏览(154)

我已经在python中存储了一些数据,现在我想在django中显示它,我该怎么做呢?

animeUrl = "https://api.jikan.moe/v4/top/anime"
animeResponse = requests.get(animeUrl).json()

def topAnime():
    for idx, video in enumerate(animeResponse['data']):
        animeUrl = video['url']
        title = video['title']
        status = video['status']
        type =  video['type']   
        images = video['images']['jpg']['image_url']   
        #if status == "Currently Airing":
        print (idx+1,":",animeUrl, ":", status, ":", title, ":", type, ":", images)    
topAnime()

这是我存储的数据,现在我想在网站上显示它,我该怎么做呢?我是django的新手,我在寻找一些建议
我试过使用模板,但没有效果

j9per5c4

j9per5c41#

如果你是新手,我强烈建议你按照tutorial来构建你的第一个项目,它帮助你掌握一些关键概念。你可以在third part中找到你的解决方案。
但是,要回答你的问题:
在您应用的www.example.com中views.py:

from django.shortcuts import render
import requests
    
def get_animes(request):
    url= "https://api.jikan.moe/v4/top/anime"
    response= requests.get(url).json()
    return render(request, 'animes.html', { 'data': response['data']})

在您应用的www.example.com中urls.py:

from django.urls import path
from . import views
    
urlpatterns = [
    path('animes/', views.get_animes, name='animes'),
]

在animes.html文件中:

{% for obj in data %}
    {{ obj.url }}
    <br>
    {{ obj.title }}
    <br>
    {{ obj.status }}
    <br>
    {{ obj.type }}
    <br>
    {{ obj.jpg.image_url }}
    <br>
    <br>
{% endfor%}

在您的根目录urls.py:

from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('myApp.urls')),
]

最后,运行开发服务器:

python manage.py runserver

打开浏览器并向您的URL发送请求:

http://localhost:8000/animes/
brtdzjyr

brtdzjyr2#

问题的答案在这里:How to pass data to a template in Django?
为了在django中显示从url到html文件的数据,有两种方法

方法1:呈现模板沿着数据Django Templates

如何在项目中使用:Render Html Pages in django
你可以很容易地设置jinja语法与以上两个链接的帮助
方法2:使用django Rest框架Django Rest Framwork
如果您已经使用过api,并且使用过java脚本发送 AJAX 请求,请首选此方法
方法1的示例代码结构:main.py

from django.shortcuts import render
animeUrl = "https://api.jikan.moe/v4/top/anime"
animeResponse = requests.get(animeUrl).json()

def topAnime():
    for idx, video in enumerate(animeResponse['data']): # z [data] wyciaga mi nastepujace rzeczy ktorze sa pod spodem
        animeUrl = video['url']
        title = video['title']
        status = video['status']
        type =  video['type']   
        images = video['images']['jpg']['image_url']   
        #if status == "Currently Airing":
        print (idx+1,":",animeUrl, ":", status, ":", title, ":", type, ":", images)    
topAnime()

def requestSender(request):
    return render(response, "index.html", data=topAnime())

index.html

<body>
<p> {{ data }} </p>
</body>

相关问题