vue3中,通过django读取后端保存的所有由当前用户上传的图片
时间: 2024-02-03 08:13:59 浏览: 103
首先,在Django后端中,你需要为用户上传的图片创建一个`Image`模型,用来存储图片的相关信息。可以在模型中定义如下字段:
```python
from django.db import models
class Image(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
image = models.ImageField(upload_to='images/')
created_at = models.DateTimeField(auto_now_add=True)
```
其中,`user`字段用于关联用户,`image`字段用于存储图片,`created_at`字段用于记录创建时间。
接着,在Vue 3中,你需要通过axios向后端发送请求,获取当前用户上传的所有图片。可以定义一个函数,如下所示:
```javascript
import axios from 'axios';
const getImages = async () => {
const response = await axios.get('/api/images/');
return response.data;
};
```
在上述代码中,我们使用axios向`/api/images/`发送GET请求,获取所有图片的列表。接着,我们返回响应数据。
最后,在Vue 3的组件中,你可以调用该函数,如下所示:
```javascript
<template>
<div>
<ul>
<li v-for="image in images" :key="image.id">
<img :src="image.image.url" alt="image">
<span>{{ image.created_at }}</span>
</li>
</ul>
</div>
</template>
<script>
import { defineComponent, reactive, onMounted } from 'vue';
import { getImages } from '@/api';
export default defineComponent({
setup() {
const state = reactive({
images: [],
});
onMounted(async () => {
state.images = await getImages();
});
return {
...toRefs(state),
};
},
});
</script>
```
在上述代码中,我们使用`v-for`指令遍历所有图片,并使用`image.image.url`获取图片的URL。此外,我们还显示了每张图片的创建时间。最后,我们在组件的`setup()`函数中调用`getImages()`函数,获取图片列表,并将数据保存在响应式对象`state`中,以便在视图中渲染。
阅读全文