尝试使用Django进行API练习①

请注意:作者是初学者,可能有错误,请注意。

我在上一次的项目中提到了想要做点什么,因此打算顺便学习一下API,毕竟之前没接触过。
我想使用Weather Hacks的天气API来制作一个天气显示页面。(写代码的时候可能会有些凌乱,请谅解)
另外,由于上次开始后一直在持续进行,项目的创建方式和进入虚拟环境的方法请参考之前的说明。
这一次我真的想要体验一下kite的强大之处。

制作应用程序

据说在django中,每个功能都需要创建一个应用程序。那么就让我们开始创建吧!

python manage.py startapp アプリ名

在这里,您可以创建一个名为“应用名称”的应用程序。这次让我们称之为weather_app。
然后,Weather_app文件夹应该创建在django_test文件夹中。
现在,让我们来看一下目录结构。

项目名称/
┗django_test/
┣django_test/
┃    ┣_init_.py
┃    ┣settings.py
┃    ┣urls.py
┃    ┗wsgi.py
┣weather_app/
┃    ┣migrations/
┃    ┃   ┗_init_.py
┃    ┣_init_.py
┃    ┣admin.py
┃    ┣apps.py
┃    ┣models.py
┃    ┣test.py
┃    ┗views.py
┣db.sqlite3
┗manage.py

项目名/
┗django_test/
┣django_test/
┃    ┣_init_.py
┃    ┣settings.py
┃    ┣urls.py
┃    ┗wsgi.py
┣weather_app/
┃    ┣migrations/
┃    ┃   ┗_init_.py
┃    ┣_init_.py
┃    ┣admin.py
┃    ┣apps.py
┃    ┣models.py
┃    ┣test.py
┃    ┗views.py
┣db.sqlite3
┗manage.py

我认为会是这样的。在涉及到各个项目的时候会进行解释。由于项目名/django_test和django_test/django_test很难区分,所以在本文中,我将前者表示为django_test/,后者表示为../django_test/。虽然有些晦涩难懂,但过长的说明也不好,还请见谅。

添加已创建的应用程序

即使继续执行,该项目也没有意识到已添加了应用程序。让我们编辑django_test/settings.py并告诉它我们已经添加了一个应用程序!

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'weather_app',  # 追加
]

创建模板

在Django中,为每个应用程序创建一个模板文件夹,并将HTML文件放置在其中。
通过从每个应用程序调用HTML并传递数据进行显示。
现在,请在weather_app文件夹内创建一个名为”templates”的文件夹。然后在创建的”templates”文件夹中创建一个”weather_app”文件夹。在其中创建HTML文件。本次创建base.html。文件结构如下所示。

天气应用/
┗模板/
┗天气应用/
┗base.html

由于我使用PyCharm,所以当我创建HTML文件时,它会帮我创建模板,但是我还不需要写内容。

创建视图

在View中,我们可以将数据传递给模板并进行显示。(这是我认为的。)
据说有函数视图和类视图两种写法,但这次我打算挑战平时不常用的类视图。
打开weather_app/views.py文件,开始写入。

from django.shortcuts import render
from django.views.generic import TemplateView

# Create your views here.
class weather_view(TemplateView):
    template_name = 'weather_app/base.html'

只要调用此weather_view类,就会显示weather_app/base.html。

生成URL

那么,我们来设置URL来调用。在weather_app文件夹下创建urls.py文件吧。

from django.urls import path
from weather_app.views import weather_view

urlpatterns = [
    path('', weather_view.as_view(), name='weather_view'),
]

我们去向项目组请求他们使用我在这里写的URL。位置在../django_test/urls.py。

from django.contrib import admin
from django.urls import path, include # includeを追加

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('weather_app.urls')), # 追加
]

如果运行这个,应该会执行base.html。 让我们运行一下并跳转到URL上吧!
看看,是不是显示了一个完全白色的页面。 这样就完成了页面的显示!

将数据从视图传递到模板

下一步,让我们将数据传递给模板。
这次,让我们随便传递一个名为“test”的字符串并进行显示。

...
class weather_view(TemplateView):
    template_name = 'weather_app/base.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context["text"] = "test"
        return context

哦,来到这里后我才了解到Kite的厉害之处。能够在瞬间写出方法确实非常轻松方便。
好了,既然应该已经传递了数据,那么我们就开始修改模板来显示吧。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{text}}<br/>
</body>
</html>

然后显示出了刚刚传递的test字符串!
哎呀,Kite和HTML不支持呢…希望能够支持(迫切)
这次指定的名称是text,所以{{text}}已被使用,但是例如

...
        context["baba"] = "このみ"
        context["まつり"] = "姫"
        context["モモセ"] = "リオ"
        context["天空橋"] = "tomoka"
        return context

如果这样的话

...
{{baba}}<br/>
{{maturi}}<br/>
{{ももせ}}<br/>
{{天空橋}}<br/>

就像这样。可以使用汉字或平假名。

总结

因为变得太长了,所以我打算在这里先结束。
Kite很厉害呢。不仅速度快,还能在建议中突出显示当前正在写的参数,非常容易理解。
我觉得建议上面出现我想要的是偶然还是Kite的厉害呢…总之很好用。
不过,如果能在HTML上也有就更好了,我对HTML不太了解…
希望下次能学习简单的Json格式和从API接收数据之类的。
那就先这样吧。

广告
将在 10 秒后关闭
bannerAds