【发布时间】:2021-09-27 19:15:08
【问题描述】:
我正在尝试做一个数字商店。我已经在 Fastapi 上获得了产品,现在我必须将它们呈现到网页上。我不知道该怎么做。我尝试使用 VueJS 导入它们,如下所示:
import productlist from ('127.0.0.1:8000/products')
var prod = new Vue({
$el: '#app',
data: {
loading: true,
errored: false
},
mounted() {
axios
.get('127.0.0.1:8000/products')
.then (response => (this.$el.info = response))
.catch (error => console.log(error))
},
methods: {
reply_click(e) {
var id = event.target.getAttribute('data-id');
alert(id);
}
}
});
但它们没有出现在应有的 div 上,这样做是这样的:
<div id="app">
<div class="row">
<div v-for="prod in productlist" data-id="prod.id" :key="prod.id" class="col-3 producte" data-toggle="modal" data-target="#modal1" on-click="reply_click($event)">
<template>
<div class="producte">
<div class="imgdesc">
<img :src="prod.urlimg" class="img-fluid"><br>
{{ product.desc }}
</div>
<img v-if="prod.cartell === 'new'" src="imgs/sign_new_offer.png" class="cartell">
<img v-if="prod.cartell === 'offer'" src="imgs/sign_offer.png" class="cartell">
</div>
</template>
</div>
</div>
</div>
这是我拥有的 JSON。我将它发布在 fastapi 上,我必须从那里获取它,而不是从我发布的文件中获取。
{
"id": 1,
"desc": "Kaweco sport capeless roller pen and pencil set in pouch white",
"urlimg": "imgs/offer1.png",
"preu": 22,
"oferta": "no"
},
{
"id": 2,
"desc": "Hacoa masking tape holder",
"urlimg": "imgs/offer2.png",
"preu": 24,
"oferta": "new"
},
{
"id": 3,
"desc": "Hacoa black walnut business card holder",
"urlimg": "imgs/offer3.png",
"preu": 30,
"oferta": "new"
},
{
"id": 4,
"desc": "Postalco legal envelope navy",
"urlimg": "imgs/offer4.png",
"preu": 15,
"oferta": "offer"
}
好的,这是一个带有json上第一个对象数据的模板。价格(“preu”)不在其中,因为它进入了一个在单击图像时打开的模式。
<div id="app">
<div class="row">
<div data-id="1" :key="1" class="col-3 producte" data-toggle="modal" data-target="#modal1" on-click="reply_click($event)">
<template>
<div class="producte">
<div class="imgdesc">
<img :src="imgs/offer1.png" class="img-fluid"><br>
Kaweco sport capeless roller pen and pencil set in pouch white
</div>
<!-- in the first one there's no offer, so the "cartell" wouldn't be showing. -->
</div>
</template>
</div>
</div>
</div>
我也尝试了一个 Jinja 模板,但我不太了解它是如何工作的。任何形式的帮助都将受到热烈欢迎。谢谢。
【问题讨论】:
-
您正在尝试分别使用
vue.js和fastapi将数据从frontend发送到backend,对吧? -
不,是从后端到前端。我已经将数据存储在 fastapi 上。我想在网页上渲染它。
-
请发布您的 json 示例!
-
完成了。这就是我在执行 get 请求时从 fastapi 获得的信息。
-
我不知道该放在哪里,我清楚地了解
urlimg和desc,但其他我不知道该放在哪里。请制作一个模板,在那里添加第一个 json 并发布。其他的东西我都说对了,但是我不知道应该把哪个放在哪里,所以我没有回答。这样做,我会发布答案,另外我也不明白v-if的事情。cartell这是哪里?
标签: python html vue.js jinja2 fastapi