drf+vue全栈教程:前后端联调实现简陋的文章列表
这篇文章将教大家使用axios获取简单地文章列表,让我们开始吧!
跨域配置
由于网站的安全机制,通常需要遵循同源策略,即协议、域名、端口三者都相同。然而,在前后端分离的项目中(本地环境)是无法实现同源的,所以就需要在后端中配置。
- 首先,进入虚拟环境,安装跨域配置的库:
1
pip3 install django-cors-headers
- 接着,在
settings.py
中配置:到此,后端部分搞定。1
2
3
4
5
6
7
8
9
10
11
12
13
14# backend/settings.py
INSTALLED_APPS = [
...
'corsheaders' # 新增
]
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware', # 需注意与其他中间件顺序,这里放在最前面即可
...
]
# 支持跨域配置开始
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True
前端请求数据
首先,命令行安装axios
:
1 | cnpm install axios |
接着在前端的Home.vue
里写入(JavaScript部分):
1 | import axios from 'axios'; |
需要注意,这里是两个script标签中的JavaScript部分,并且前面还省略了一段内容,完整js部分内容如下:
1 | <script> |
好了,说说这里我们干了什么。
- 我们通过axios从后端获取了数据
- 我们定义了获取数据的函数
- 我们将数据储存在了
articles
变量中,方便在模板里使用
接下来让我们测试一下。
- 重启前端项目,启动后端项目
- 访问http://127.0.0.1:8080
- 不要看节目,输入快捷键:Ctrul+shift+i,打开开发者工具(俗称f12),打开控制台,检查有没有报错。如果没有,那么恭喜你,数据获取成功啦!
文章界面
接下来,我们开始编写文章列表界面,将数据运用在界面中。
1 | <template> |
这里只是实现了一个十分简单的列表,其他字段都没有写在页面中,也没有做任何美化,在后面的文章中会实现更复杂的列表。
v-for
:循环,将数据生成一个列表{{ article.title }}
:文章的标题,json
数据里面的一部分
重启项目,入过没有任何错误,会展示出简单的文章列表。
错误的排查
然而,一切总不会这么顺利,很可能无法展示出文章列表,这里说说可能有哪些错误。
后端api问题
首先,我们就要检查后端的api里面是否有数据,如果没有数据,前端岂能获得数据?如果没有数据,就要检查项目是否启动,序列化,模型和视图是否正确等等。
前端axios问题
接着,让我们用Ctrul+shift+i快捷键打开开发者工具–>控制台,查看是否有报错,有报错就要检查前端代码。
最后
博主说:本章内容最难,最有挑战性,最关键,最容易出错,你需要参考各类文档,博主后续也会专门写一篇文章,为大家讲解vue的基础,通读文档是很重要的!
有任何疑问欢迎加QQ群:Python学习交流 1140464262
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jacky的个人博客!
评论