基于Python的前后端分离项目学习笔记二

一、从数据库读取数据,在views.py中写入代码,如:

from django.http import JsonResponsefrom apps.market.models import User
# Create your views here.

# 从数据库获取用户数据
def get_Users(request):
    try:
        # 使用ORM获取所有用户信息 并把对象转为字典格式
        obj_users = User.objects.all().values()
        # 把外层的容器转为List
        users = list(obj_users)
        # 返回
        return JsonResponse({'code': 1, 'data': users})
    except Exception as e:
        # 如果出现异常,返回
        return JsonResponse({'code': 0, 'msg': "获取用户信息出现异常,具体错误:" + str(e)})

二、在urls.py中添加代码,以便前端能够访问到数据,如:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('goods/', views.get_Goods),//添加该行代码
]

三、在setting.py的ALLOWED_HOSTS中添加本机ip,如:

ALLOWED_HOSTS = ['192.168.182.128']

四、在前端的js文件中添加使用axios请求后端数据的函数,如:

//获取所有物品信息
        getGoods: function () {
            //使用axios实现ajax请求
            let that = this
            axios
                .get(that.baseURL + 'goods/')
                .then(
                    function (res) {
                        //请求成功后执行的函数
                        if (res.data.code === 1)
                        {
                            that.goods = res.data.data
                            for(g of that.goods)
                            {
                                g.image = that.baseURL+'media/'+g.image
                            }
                            that.goodsTotal = res.data.data.length
                            that.displayGoods = that.goods
                        }
                        else
                            //失败的提示!
                            that.$message.error(res.data.msg)
                    }
                )
                .catch(
                    function (err) {
                        //请求失败后执行的函数
                        console.log(err)
                    }
                )

        },

 

五、解决axios的跨域请求问题,在终端输入pip install django-cors-headers,然后在setting.py的INSTALLED_APPS中添加corsheaders,接着在setting.py的MIDDLEWARE中添加corsheaders.middleware.CorsMiddleware。最后在setting.py中添加代码:

# 添加Cors配置
# 1. 设置白名单,凡是出现在白名单的域名都可以访问后端
CORS_ORIGIN_WHITELIST = ('http://127.0.0.1:8080',)
# 2. 是指Cors Cookie
CORS_ALLOW_CREDENTIALS = True

 六、前端向后端发送数据,如搜索信息:

queryGoods:function() {
            //搜索物品
            let that = this
            
            //开始Ajax请求
            axios
                .post(
                    that.baseURL + "query/",
                    {
                        inputstr: that.inputStr,
                        item: that.selectItem,
                    }
                )
                .then(function (res) {
                    if (res.data.code === 1) {
                        //把数据给displaygoods
                        that.displayGoods = res.data.data;
                        console.log(res.data.data.length)
                        //提示:
                        that.$message({
                            message: '查询数据加载成功!',
                            type: 'success'
                        });

                    } else {
                        //失败的提示!
                        that.$message.error(res.data.msg);
                    }
                })
                .catch(function (err) {
                    console.log(err);
                    that.$message.error("获取后端查询结果出现异常!");
                });

        }

七、前端访问后端图片,

1)现在后端根目录创建media文件夹;

2)将图片储存在media中;

3)在setting.py中添加代码

# 设置上传文件的目录和外部访问的路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'

4)在url.py中添加代码:


from django.conf.urls.static import static
#添加这行--- 允许所有的media文件被访问
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

 

如访问图片sadf54sad1as.jpg:

<image :src="baseURL"/>

<script>

baseURL: 'http://10.3.11.141:8000/'+"media/"+"sadf54sad1as.jpg"//图片路径

</script>

 

posted @ 2020-11-03 21:44  ☞@_@  阅读(233)  评论(0编辑  收藏  举报