如何在 fastapi 上查看来自 json 的产品
How to view products from a json on fastapi
我想开一家数字商店。我已经在 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 模板,但不太了解它的工作原理。任何形式的帮助都将非常受欢迎。谢谢。
请检查:
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<div class="row">
<div v-for="prod in product" :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>
{{ prod.desc }}
</div>
<img v-if="prod.oferta == 'new'" :src="prod.urlimg" class="cartell">
<img v-if="prod.oferta == 'offer'" :src="prod.urlimg" class="cartell">
</div>
</template>
</div>
</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
product: [{
"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"
}]
}
});
</script>
它应该非常适合您!我们必须使用 :
来使用 vue 数据作为元素中的属性,而在使用 normally/as 文本时我们只能做 {{ data }}
。
我想开一家数字商店。我已经在 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 模板,但不太了解它的工作原理。任何形式的帮助都将非常受欢迎。谢谢。
请检查:
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
<div class="row">
<div v-for="prod in product" :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>
{{ prod.desc }}
</div>
<img v-if="prod.oferta == 'new'" :src="prod.urlimg" class="cartell">
<img v-if="prod.oferta == 'offer'" :src="prod.urlimg" class="cartell">
</div>
</template>
</div>
</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
product: [{
"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"
}]
}
});
</script>
它应该非常适合您!我们必须使用 :
来使用 vue 数据作为元素中的属性,而在使用 normally/as 文本时我们只能做 {{ data }}
。