zoukankan      html  css  js  c++  java
  • 基于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>
  • 相关阅读:
    【Android】Handler的应用(二):从服务器端加载JSON数据的优化
    [置顶] IOS 开发之 CocoaPods讲解
    POJ 1068 (13.10.11)
    android使用百度地图、定位SDK实现地图和定位功能!(最新、可用+吐槽)
    C++笔记(1)
    WCF讲解
    php5 图片验证码一例
    PHP5 GD库生成图形验证码(汉字)
    mysql中limit的用法实例解析
    Limit参数优化MySQL查询的方法
  • 原文地址:https://www.cnblogs.com/mango1997/p/13922773.html
Copyright © 2011-2022 走看看