python+html实现前后端数据交互界面显示

本文记录了使用PyCharm创建Django项目,实现前端HTML输入数据,后端Python处理并返回结果的过程。通过一个简单的计算功能示例,详细介绍了项目的创建、后端代码编写、前端HTML页面设计及启动后台服务的步骤。适合初学者了解前后端不分离的开发模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近刚刚开始学习如何将python后台与html前端结合起来,现在写一篇blog记录一下,我采用的是前后端不分离形式。

话不多说,先来实现一个简单的计算功能吧,前端输入计算的数据,后端计算结果,返回结果至前端进行显示。

1.python开发工具

我选用的是pycharm专业版,因为社区版本无法创建django程序

2.项目创建

第一步:打开pycharm,创建一个django程序

蓝圈圈起来的为自定义的名字,点击右下角的create可以创建一个django项目

如下图,圈起来的名字与上图相对应

第二步:编写后端代码

①在blog文件夹下面的views.py中编写以下代码:

from django.shortcuts import render
from calculate import jisuan
# Create your views here.


def calculate(request):
    return render(request, 'hello.html')


def show(request):
    x = request.POST.get('x')
    y = request.POST.get('y')
    result = jisuan(x, y)
    return render(request, 'result.html', {'result': result})

②在csdn文件夹下面的urls.py中添加下面加粗部分那两行代码

from django.contrib import admin
from django.urls import path
from blog import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('jisuan/', views.calculate),
    path('getdata/', views.show)
]

③新建calculate.py文件,内容为:

def jisuan(x, y):
    x = int(x)
    y = int(y)
    return (x+y)

第三步:编写前端代码

①数据输入的页面hello.html,内容为:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form method="post" action="/getdata/">
    {% csrf_token %}
    <input type="text" name="x" placeholder="请输入x"/><br>
    <input type="text" name="y" placeholder="请输入y"><br>
    <input type="submit" value="进行计算">
</form>

</body>
</html>

②结果返回的页面result.html,内容为:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1 style="color:blue">计算结果为{{ result }}</h1>
</body>
</html>

第四步:启动后台程序

在浏览器地址栏输入http://127.0.0.1:8000/jisuan

回车可进入数据输入页面

我们输入x=10, y=20

点击进行计算按钮,页面跳转,显示计算结果

好啦,一个简单的django项目就完成啦

如果想要进行复杂的计算操作,可以在calculate.py编写更加复杂的函数

源码资源链接:django学习,前后端不分离-Python文档类资源-CSDN文库[这里是图片006]https://download.csdn.net/download/thzhaopan/84989809

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

### 如何在Python FastAPI中实现前后端数据交互 #### 1. 后端定义接口并返回HTTP状态码 通过`FastAPI`框架可以轻松定义RESTful API接口。例如,在创建资源时可以通过`status_code`参数指定HTTP响应的状态码[^1]。 ```python from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List app = FastAPI() class Item(BaseModel): name: str @app.post("/items/", status_code=201) async def create_item(item: Item): return {"name": item.name} ``` 以上代码展示了如何通过POST请求向服务器发送数据,并返回成功创建的HTTP状态码`201 Created`[^1]。 --- #### 2. 定义CRUD操作以支持更复杂的数据交互 为了展示完整的前后端交互流程,下面是一个简单的任务管理系统的后端逻辑示例[^3]: ```python # 导入必要的模块 from fastapi import FastAPI, HTTPException from pydantic import BaseModel from typing import List app = FastAPI() tasks_db = [] task_id_counter = 1 # 数据模型定义 class TaskBase(BaseModel): title: str class Task(TaskBase): id: int status: str = "待完成" class TaskResponse(BaseModel): tasks: List[Task] # 获取所有任务 @app.get("/api/tasks", response_model=TaskResponse) async def get_tasks(): return TaskResponse(tasks=tasks_db) # 创建新任务 @app.post("/api/tasks", response_model=Task) async def create_task(task_create: TaskBase): global task_id_counter new_task = Task(id=task_id_counter, title=task_create.title) tasks_db.append(new_task) task_id_counter += 1 return new_task ``` 此部分实现了GET和POST两种方法,分别用于获取任务列表以及新增任务[^3]。 --- #### 3. 前端调用后端API 前端通常会使用JavaScript库(如Axios或Fetch)发起异步请求到后端API。以下是一个基于HTML和JavaScript的例子[^2]: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Frontend Example</title> </head> <body> <h1>任务管理系统</h1> <!-- 输入框 --> <input type="text" id="taskTitleInput" placeholder="输入任务名称..." /> <button onclick="createTask()">添加任务</button> <!-- 显示区域 --> <ul id="taskList"></ul> <script> // 添加任务函数 function createTask() { const inputElement = document.getElementById('taskTitleInput'); const title = inputElement.value; fetch('/api/tasks', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title }) }).then(response => response.json()) .then(data => refreshTasks()); inputElement.value = ''; // 清空输入框 } // 更新任务列表显示 function refreshTasks() { fetch('/api/tasks') .then(response => response.json()) .then(data => { const ul = document.getElementById('taskList'); ul.innerHTML = ''; data.tasks.forEach(task => { const li = document.createElement('li'); li.textContent = `${task.id}: ${task.title} (${task.status})`; ul.appendChild(li); }); }); } // 页面加载完成后刷新任务列表 window.onload = () => refreshTasks(); </script> </body> </html> ``` 这段代码演示了如何从前端界面收集用户输入并通过AJAX请求将其提交给后端服务[^2]。 --- ### 总结 上述内容涵盖了从后端API设计到前端页面开发的整体过程。后端负责处理业务逻辑并数据库交互,而前端则专注于用户体验并将用户的动作转化为网络请求传送给后端。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值