我正在 Jobs Portal 上构建一个项目,我需要 Vue 作为前端,Fastapi 作为后端(添加、删除更新)。我想知道我是否可以将这两者都连接起来。
Yag*_*nci 13
我想知道我是否可以将这两者都连接起来。
但是有很多方法,你可以用 Jinja 之类的东西来渲染模板,或者你可以用 Vue CLI 之类的东西创建一个完全不同的项目,你可能想使用 Nginx 或 Apache 之类的东西来连接两者。
所以让我们用 Jinja 创建一个示例应用程序
??? main.py
??? templates
??? home.html
Run Code Online (Sandbox Code Playgroud)
main.py/并home.html在该路径中呈现我们的。/add将从我们的前端发送一个请求。from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
from pydantic import BaseModel
templates = Jinja2Templates(directory="templates")
app = FastAPI()
class TextArea(BaseModel):
content: str
@app.post("/add")
async def post_textarea(data: TextArea):
print(data.dict())
return {**data.dict()}
@app.get("/")
async def serve_home(request: Request):
return templates.TemplateResponse("home.html", {"request": request})
Run Code Online (Sandbox Code Playgroud)
home.html/add直接传递给 Axios。<html>
<title></title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<body>
<div id="app">
<textarea name="" id="content" cols="30" rows="10" v-model="content"></textarea>
<button @click="addText" id="add-textarea">click me</button>
</div>
<script>
new Vue({
el: "#app",
data: {
title: '',
content: ''
},
methods: {
addText() {
return axios.post("/add", {
content: this.content
}, {
headers: {
'Content-type': 'application/json',
}
}).then((response) => {
console.log("content: " + this.content);
});
}
}
});
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
最后,您将拥有一个看起来很糟糕的 textarea 和一个按钮。但它会帮助你更好地理解事物。

{'content': 'Hello textarea!'}
INFO: 127.0.0.1:51682 - "POST /add HTTP/1.1" 200 OK
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6131 次 |
| 最近记录: |