“安居客“住房系统-基于Python-Django前后端分离开发(三)——前后端代码联调

前后端代码联调 - Vue + Element UI

作者:代昌松
这里我将在static/html文件夹下创建一个test.py的前端数据测试页,通过Ajax发起异步请求的方式拿到后端数据,然后通过Vue.js渲染前端页面。

此处我会利用到https://element.eleme.cn/#/zh-CN 的一些下拉列表,样式,表格等等组件建立我的测试网页。

获取省级行政区API接口数据

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>前后端联调测试</title>
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>
<body>
<h1>Hello World!</h1>
<hr>
<div id="app1">
    <el-select v-model="provId" filterable placeholder="请选择">
        <el-option
            v-for="prov in provinces"
            :key="prov.distid"
            :label="prov.name"
            :value="prov.distid">
        </el-option>
    </el-select>
</div>


<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.1/vue.min.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
    new Vue({
        el: '#app1',
        data: {
            provId: null,
            provinces: [],
        },
        created() {
            fetch('/api/districts/')
                .then(resp => resp.json())
                .then(json => this.provinces = json.result)
        }
    })
</script>
</body>
</html>

省市区三级联动效果

完成到这一步,表明获取接口数据就已经成功了,接下来要做的就是实现省市区三级联动的效果。废话不多说,直接上代码:

<div id="app1">
    <el-select v-model="provId" filterable placeholder="请选择" @change="selectProv">
        <el-option
            v-for="prov in provinces"
            :key="prov.distid"
            :label="prov.name"
            :value="prov.distid">
        </el-option>
    </el-select>
    <el-select v-model="cityId" filterable placeholder="请选择" @change="selectCity">
        <el-option
            v-for="city in cities"
            :key="city.distid"
            :label="city.name"
            :value="city.distid">
        </el-option>
    </el-select>
    <el-select v-model="countyId" filterable placeholder="请选择">
        <el-option
            v-for="county in counties"
            :key="county.distid"
            :label="county.name"
            :value="county.distid">
        </el-option>
    </el-select>
</div>


<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.1/vue.min.js"></script>
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<script>
    new Vue({
        el: '#app1',
        data: {
            provId: null,
            provinces: [],
            cityId: null,
            cities: [],
            countyId: null,
            counties: []
        },
        created() {
            fetch('/api/districts/')
                .then(resp => resp.json())
                .then(json => this.provinces = json.result)
        },
        methods: {
            selectProv() {
                this.cities = []
                this.cityId = null
                this.counties = []
                this.countyId = null
                fetch('/api/districts/' + this.provId)
                    .then(resp => resp.json())
                    .then(json => this.cities = json.cities)
            },
            selectCity() {
                this.counties = []
                this.countyId = null
                fetch('/api/districts/' + this.cityId)
                    .then(resp => resp.json())
                    .then(json => this.counties = json.cities)
            }
        }
    })
</script>
</body>
</html>

经理人数据表格

同样利用Element的框架制作可以翻页的经理人表格,代码如下

<div id="app2">
        <el-table :data="agents" style="width: 60%">
            <el-table-column
                    prop="agentid"
                    label="编号"
                    width="80">
            </el-table-column>
            <el-table-column
                    prop="name"
                    label="姓名"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="tel"
                    label="电话"
                    width="180">
            </el-table-column>
            <el-table-column
                    prop="servstar"
                    label="服务星级"
                    width="280">
                <el-template slot-scope="scope">
                    <el-rate
                            disabled
                            v-model="scope.row.servstar"
                            :colors="['#ffc0c0', '#ffa0a0', '#ff0000']">
                    </el-rate>
                </el-template>
            </el-table-column>
        </el-table>
        <el-pagination
                layout="prev, pager, next"
                page-size="5"
                :total="count"
                @current-change="handleCurrentChange"
                @prev-click="loadData(prevPage)"
                @next-click="loadData(nextPage)">
        </el-pagination>
</div>

<script>
        const app2 = new Vue({
            el: '#app2',
            data: {
                count: 0,
                agents: [],
                nextPage: null,
                prevPage: null,
            },
            created() {
                this.loadData('/api/agents/')
            },
            methods: {
                handleCurrentChange(currentPage) {
                    this.loadData('/api/agents/?page=' + currentPage)
                },
                loadData(url) {
                    if (url) {
                        fetch(url)
                            .then(resp => resp.json())
                            .then(json => {
                                this.agents = json.results
                                this.count = json.count
                                this.nextPage = json.next
                                this.prevPage = json.previous
                            })
                    }
                }
            }
        })
</script>

最后呈现出的效果如下图

在这里插入图片描述


感谢阅读❤,我将持续更新
项目详情代码请参考我的码云: https://gitee.com/dcstempt_ping/izufang_rent

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
手把手进行Django Vue前后端分离开发的入门,可以通过以下步骤实现: 1. 首先,确保已经安装了Python和Node.js,以及相应的开发环境。 2. 创建一个Django项目,可以使用命令`django-admin startproject project_name`来创建项目。 3. 进入项目目录,创建一个Django应用,可以使用命令`python manage.py startapp app_name`来创建应用。 4. 在Django中配置应用,包括数据库连接、URL路由等,可在`settings.py`中进行配置。 5. 创建数据库模型,可以在应用目录下的`models.py`中定义模型类,表示数据表结构。 6. 执行迁移命令,将模型映射到数据库中,可使用命令`python manage.py makemigrations`和`python manage.py migrate`执行。 7. 在应用目录下创建视图函数,用于处理客户端的请求,其中可以包括接收和发送JSON数据。 8. 在`urls.py`中配置URL路由,将请求的URL与对应的视图函数进行关联。 9. 使用Vue CLI创建Vue项目,可以使用命令`vue create frontend`来创建项目。 10. 在Vue项目中安装axios,用于发送HTTP请求,可以使用命令`npm install axios`进行安装。 11. 按照需求,在Vue组件中编写前端代码,可以使用axios与后端进行数据交互,获取数据并展示。 12. 运行Django项目,可以使用命令`python manage.py runserver`来启动Django服务器。 13. 运行Vue项目,可以使用命令`npm run serve`来启动Vue开发服务器。 通过以上步骤,即可实现Django Vue前后端分离开发入门。在实践中,可以进一步学习和了解DjangoVue的相关文档和教程,通过不断实践和探索,提升开发技能。相关的示例代码和项目实例可以参考知乎上的文章。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代__-__代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值