使用python进行前后端分离的web开发

         一、准备工作

        需要掌握Python的基本语法,数据库的基本语法,然后就是比较难得部分,需要掌握后端框架(例如:Flask、Django),前端开发的三剑客(HTML、CSS、JavaScript)的基础知识,然后就是最重要的部分,就是前后端分离时异步发送请求的方法(例如:xmlhtmlrequest、fetch),以及使用Python代码连接数据库的操作,这一部分是有点难理解的。

        本文例子使用flask后端框架,使用fetch来进行异步处理请求,使用pymysql库来连接MySQL数据库。

        需要安装好以下Python库。

from flask import Flask, request, render_template, jsonify
import pymysql

         二、开始

        2.1 与数据库的连接

        我们需要知道我们数据库的一些数据,如果你修改过,你需要去数据库中查询。

# 连接数据库
db_config ={
    'host':'your_host',      # 数据库主机地址
    'user':'your_username',  # 数据库用户名
    'password':'your_password',  # 数据库密码
    'database':'your_database',  # 数据库名称
    'charset':'utf8mb4',      # 字符集,根据实际需要修改
    'cursorclass':pymysql.cursors.DictCursor  # 返回字典形式的游标
}
def get_connection():
    return pymysql.connect(**db_config)

        2.2 与前端的连接

        2.2.1 前端文件

        我写了一个简单的前端文件,将css和js代码都写到一个html文本里了,简单的加了一些配置。然后就是使用fetch来进行异步申请。xmlhtmlrequest是比较老的异步申请的方法,fetch是比较新的方法,因此选择了fetch来处理申请。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Data Entry</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }

        input {
            padding: 8px;
            margin-right: 10px;
        }

        button {
            padding: 10px;
            cursor: pointer;
        }

        .modal {
            display: none;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            padding: 20px;
            background-color: #fff;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            z-index: 1000;
        }
    </style>
</head>
<body>

    <h2>Data Entry</h2>

    <label for="name">Name:</label>
    <input type="text" id="name" placeholder="Enter name">

    <button onclick="addData()">Add Data</button>

    <!-- Modal for success message -->
    <div id="successModal" class="modal">
        <p>Data added successfully!</p>
        <button onclick="closeModal()">OK</button>
    </div>

    <script>
        function addData() {
            const name = document.getElementById('name').value;

            fetch('/api/add_data', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify({ name }),
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    openModal();
                } else {
                    alert(data.message);
                }
            })
            .catch(error => {
                console.error('Error:', error);
                alert('An error occurred. Please try again.');
            });
        }

        function openModal() {
            const modal = document.getElementById('successModal');
            modal.style.display = 'block';
        }

        function closeModal() {
            const modal = document.getElementById('successModal');
            modal.style.display = 'none';
        }
    </script>

</body>
</html>
        2.2.2 后端处理请求

        首先需要实例化一个对象,然后需要创造与前端文件相对应的URL和请求方式(常见的请求方式有POST、GET方法,其他方法请自行了解,诶嘿)。我这个是从前端添加数据,将数据传输到后端,然后由后端再添加到数据库中,进行异常捕捉以及开启调试以便出现问题及时改正。

app = Flask(__name__)

@app.route('/') # 根路由
def index():
    return render_template('BS.html')

@app.route('/api/add_data', methods=['POST'])
def add_data():
    try:
        data = request.json
        name = data.get('name')

        if name:
            # 插入数据到数据库
            with get_connection() as connection:
                with connection.cursor() as cursor:
                    cursor.execute('INSERT INTO users (name) VALUES (%s)', (name,))
                    connection.commit()

            return jsonify({'success': True, 'message': 'Data added successfully'})
        else:
            return jsonify({'success': False, 'message': 'Name is required'})
    except Exception as e:
        return jsonify({'success': False, 'message': str(e)})

if __name__ == '__main__':
    app.run(debug=True)
        2.3 Python,启动!

        我是在Pycharm专业版中执行程序,专业版可以自动创建flask项目,如果你用的是pycharm社区版也不要气馁。专业版只是帮忙自动创建了两个文件夹(static和templates)而已,社区版只需要手动创建这两个文件。然后就是将你的css、js文件等其他的存放在static文件夹里(社区版好像创建不了css和js文件,可以都写到html文件里,专业版可以写一起也可以不写一起),html文件放在templates文件夹里,你的flask.py文件需要跟这两个文件夹是同级的,这样程序执行时会自动去寻找资源。

        下述图片就是启动成功的字样。

        然后图片中的网址是可以点进去的,它是个默认网址,可以修改后面的端口号,一般不建议改,你这里修改了,前端文件里可能也需要修改。

        下图就是我的界面,我的功能就是个简单的将名字添加到数据库里。

        现在我的数据库里面是什么都没有的。

        然后我在网页端输入了名字123后,就会添加到数据库中。

        到现在就基本上大功告成了。然后你自己有什么需求就具体修改咯。

         三、结语

        我是写了一个简单的例子,重点是前后端的分离操作和异步申请方式以及数据库的连接,数据库的连接还好一点,异步申请这一块是有点难搞的,需要细究一些。

        祝愿我们在前进的道路上能够越来越优秀,加油哦ヾ(◍°∇°◍)ノ゙

  • 29
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁是小阿狸꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值