Django 搭建知乎热榜 API

本文环境:Mac 系统,Python 3.7

准备工作

准备工作主要包括:创建项目虚拟环境、更新 pip 以及安装 Django 模块。

创建项目虚拟环境

首先创建虚拟环境,新建项目文件夹 tedxapi,右键在该文件夹处打开命令行窗口/终端窗口

python -m venv myvenv

这时项目文件夹内出现一个 myvenv 文件夹,执行以下命令启动虚拟环境

source myvenv/bin/activate

此时终端界面命令起始位置会出现 (myvenv) 字样,说明已进入虚拟环境中。

更新 pip

检查下已安装的模块

pip list

结果如下:

Package    Version
---------- -------
pip        19.0.3 
setuptools 40.8.0 
You are using pip version 19.0.3, however version 19.3.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

那就先执行下更新 pip 的命令:

pip install --upgrade pip

安装 Django 模块

接下来继续安装 Django:

pip install django

安装成功后,准备工作完毕。

开始构建 API 框架

新建 Django 项目

首先使用 Django 的命令新建名为 myapi 的项目:

django-admin startproject myapi

这时可以看到 tedxapi 内结构如下:

.
├── myapi
│   ├── manage.py
│   └── myapi
└── myvenv
    ├── bin
    ├── include
    ├── lib
    └── pyvenv.cfg

此时 命令行窗口/终端 所处路径是 tedxapi 文件夹,执行如下命令切换到新建的 myapi 文件夹内:

cd myapi

此时查看文件夹内组成,执行 ls 命令确保文件夹内含有 manage.py

执行如下命令启动新建项目:

python manage.py runserver

看到如下提示代表一切进展顺利:

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

November 18, 2019 - 02:29:05
Django version 2.2.7, using settings 'myapi.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

此时即可在浏览器中打开 http://127.0.0.1:8000/ 来连接此项目,页面中会显示 “The install worked successfully! Congratulations!” 等提示成功的信息。

同时,在命令行/终端窗口中 CONTROL 加 C 键退出该服务器连接,继续后续的配置。

创建具体应用

注意,刚我们创建的是 Django 项目 myapi,接下来我们要在此项目内更具体地创建一个与要在页面中显示内容关联更密切的 Django 模型应用。命令行/终端 中执行以下命令:

python manage.py startapp hotlist

因为我们最终想在 api 中展示热榜信息,所以应用也命名为 hotlist,这时可以看到在 manage.py 附近出现了 hotlist 文件夹, myapi 文件夹内结构如下:

.
├── db.sqlite3
├── hotlist
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── manage.py
└── myapi
    ├── __init__.py
    ├── __pycache__
    ├── settings.py
    ├── urls.py
    └── wsgi.py

此时我们已经新建了应用,需要在 Django 项目中添加此应用信息,用代码编辑器打开 myapi/myapi/settings.py 文件,在 INSTALLED_APPS 最后添加 hotlist 应用:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'hotlist',
]

创建应用中 API 模型

已经有了项目、应用,再具体就是 API 模型——究竟以什么形式保存、展示相关的 API 数据。一旦搭建好模型,Django 就通过此模型连接前端页面展现的数据和后台服务器数据库中储存的 API 数据。

模型的搭建要考虑前端页面要展现的内容,以及数据的来源。以我们接下来要搭建的 知乎热榜 API 为例,我们想在 API 返回的数据中包含哪些数据?我们能通过爬虫拿到哪些数据?这些如果没经验,可以先参考别人做好的 API 格式,例如今日热榜开放的 API 中关于知乎网站返回的 API 数据如下:
https://www.tophub.fun:8080/GetAllInfoGzip?id=1

{
   "CreateTime":"1574040650",
"Desc":"最新进展:曹雪涛校长回应,查完了会给大家回应。 11 月 15 日起,南开大学校长、中国工程院院士曹雪涛被曝 18 篇论文造假,论文实验图片有 PS 痕迹等消息在网上热传。截止发稿时止,在最初曝出曹雪涛论文造假的国外学术交流在线平台 PubPeer 上,能检索到有上述图像异常、作者署名包括曹雪涛的论文已超过 40 篇。 在这些以曹雪涛为作者或者通讯作者的论文里,出现了两次实验结果图像完全一致;一幅实验图中,局部点图多次「复制、粘贴」,两幅实验图中,部分一致,部分疑似有增添、删减等 PS 操作的现象。《中国新闻周刊》查阅到这 40 多篇论文中的 35 篇,其中曹雪涛担任通讯作者或共同通讯作者的文章有 29 篇。在这 40 多篇文章中,目前有 4 篇被更正勘误,有一篇 2008 年发表于《生物化学杂志》的论文被撤回,该期刊 2018 年的影响因子为 4.106。 对于这些质疑,曹雪涛于 15 日下午回复《中国新闻周刊》时表示,「我现在刚到上海实验室,要把这些事情查一下。我知道大家关注这个事情,查完了,我会给大家一个回复。」 新闻链接:南开大学校长曹雪涛被曝论文造假,本人回应:查完了会有回复 从下图分析,如何判定这个消息的真实性? 事件进展: 11 月 14 日 最先爆出来的是一位科研人员,斯坦福的博士毕业。 据悉,11 月 13 日南开校长曹雪涛还在人民大会堂「 2019 全国科学道德和学风建设宣讲教育报告会」发言。 其中涉及一篇 2014 年的 ScienceSearch publications and join the conversation.",
"Title":"网传南开大学校长曹雪涛院士约 47 篇论文涉嫌数据造假,你如何看待?",
"Url":"https://www.zhihu.com/question/355811571",
"ap
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值