如何有效管理App代码与数据库以提升开发效率?

我可以为您提供一个基本的应用程序代码和数据库设计,为了便于说明,我将使用Python和Flask作为后端框架,并使用SQLite作为数据库,这个示例将包括一个简单的用户注册和登录系统。

项目结构

app代码和数据库

myapp/
│
├── app.py
├── models.py
├── templates/
│   └── login.html
│   └── register.html
├── static/
│   └── styles.css
└── requirements.txt

requirements.txt

我们需要安装一些依赖项:

Flask==2.0.1
Flask-WTF==0.14.3
email-validator==1.1.1

app.py

这是主应用程序文件:

from flask import Flask, render_template, redirect, url_for, request, flash
from flask_sqlalchemy import SQLAlchemy
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Email, Length, EqualTo, ValidationError
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
Database models
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
Form classes
class RegistrationForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired(), Length(min=8)])
    confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
    submit = SubmitField('Sign Up')
    def validate_email(self, email):
        user = User.query.filter_by(email=email.data).first()
        if user:
            raise ValidationError('Email address already exists.')
class LoginForm(FlaskForm):
    email = StringField('Email', validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])
    submit = SubmitField('Log In')
@app.route('/register', methods=['GET', 'POST'])
def register():
    form = RegistrationForm()
    if form.validate_on_submit():
        hashed_password = generate_password_hash(form.password.data).decode('utf-8')
        user = User(email=form.email.data, password=hashed_password)
        db.session.add(user)
        db.session.commit()
        flash('Your account has been created! You are now able to log in', 'success')
        return redirect(url_for('login'))
    return render_template('register.html', title='Register', form=form)
@app.route('/login', methods=['GET', 'POST'])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter_by(email=form.email.data).first()
        if user and check_password_hash(user.password, form.password.data):
            flash('Login successful!', 'success')
            return redirect(url_for('home'))
        else:
            flash('Login Unsuccessful. Please check email and password', 'danger')
    return render_template('login.html', title='Login', form=form)
@app.route('/')
def home():
    return "Welcome to the Home Page!"
if __name__ == '__main__':
    db.create_all()
    app.run(debug=True)

models.py

这个文件中定义了数据模型,但在这个例子中,我们直接在app.py中定义了User模型。

5. templates/login.html

这是登录页面的模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head>
<body>
    <div class="container">
        <h2>{{ title }}</h2>
        <form method="POST">
            {{ form.hidden_tag() }}
            <p>
                {{ form.email.label }}<br>
                {{ form.email(size=32) }}<br>
                {% for error in form.email.errors %}
                    <span style="color: red;">{{ error }}</span>
                {% endfor %}
            </p>
            <p>
                {{ form.password.label }}<br>
                {{ form.password(size=32) }}<br>
                {% for error in form.password.errors %}
                    <span style="color: red;">{{ error }}</span>
                {% endfor %}
            </p>
            <p>{{ form.submit() }}</p>
        </form>
    </div>
</body>
</html>

6. templates/register.html

这是注册页面的模板:

app代码和数据库

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{{ title }}</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
</head>
<body>
    <div class="container">
        <h2>{{ title }}</h2>
        <form method="POST">
            {{ form.hidden_tag() }}
            <p>
                {{ form.email.label }}<br>
                {{ form.email(size=32) }}<br>
                {% for error in form.email.errors %}
                    <span style="color: red;">{{ error }}</span>
                {% endfor %}
            </p>
            <p>
                {{ form.password.label }}<br>
                {{ form.password(size=32) }}<br>
                {% for error in form.password.errors %}
                    <span style="color: red;">{{ error }}</span>
                {% endfor %}
            </p>
            <p>
                {{ form.confirm_password.label }}<br>
                {{ form.confirm_password(size=32) }}<br>
                {% for error in form.confirm_password.errors %}
                    <span style="color: red;">{{ error }}</span>
                {% endfor %}
            </p>
            <p>{{ form.submit() }}</p>
        </form>
    </div>
</body>
</html>

static/styles.css

这是一个简单的CSS文件,用于美化页面:

body {
    background-color: #f8f9fa;
    font-family: Arial, sans-serif;
}
.container {
    max-width: 600px;
    margin: 50px auto;
    padding: 20px;
    border: 1px solid #ddd;
    border-radius: 5px;
    background-color: #fff;
}
h2 {
    text-align: center;
    color: #333;
}
form p {
    margin-bottom: 15px;
}
input[type="text"], input[type="password"] {
    width: 100%;
    padding: 10px;
    margin-top: 5px;
    border: 1px solid #ccc;
    border-radius: 4px;
}
input[type="submit"] {
    background-color: #4CAF50;
    color: white;
    border: none;
    padding: 10px 20px;
    border-radius: 4px;
    cursor: pointer;
}
input[type="submit"]:hover {
    background-color: #45a049;
}

是一个基本的Flask应用程序,它实现了用户注册和登录功能,并且使用了SQLite数据库来存储用户信息,您可以根据需要进一步扩展和修改此示例。

以上内容就是解答有关“app代码和数据库”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/723113.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-12-11 03:01
Next 2024-12-11 03:04

相关推荐

  • 美国vip

    美国VIP是指美国的高级会员,通常享有更多的特权和服务。这些特权可能包括优先预订、免费升级等。

    2024-04-18
    0157
  • 云服务器并发量怎么算

    云服务器的并发量计算需考虑多种因素,包括业务并发用户数、最大并发访问数、系统用户数和同时在线用户数。如果一个OA系统有1000用户,这是系统用户数;最高峰同时有500人在线,这是“同时在线人数”,也被称作“最大业务并发用户数”。还需关注后端程序效率、公网带宽以及服务器硬件配置等因素。衡量服务器并发处理能力的方法有吞吐率和压力测试。阿里云4核8G服务器的并发量计算,需要考虑这些因素。同样,对于具有特定带宽的服务器,并发量的计算也要基于实际下载速度,比如10M公网带宽的实际下载速度是1.25M/秒。云服务器并发量的计算是一个复杂的过程,涉及多个关键参数和性能指标。

    2024-01-18
    0162
  • 电商网站租用香港服务器的优势有什么

    电商网站租用香港服务器可提升访问速度,增强数据安全性,且无需担心地域限制。

    2024-01-27
    099
  • 如何判断网站是不是自适应

    今天给各位分享的是关于如何判断网站是不是自适应的详细解答内容,本文将提供全面的知识点,希望能够帮到你!

    2023-11-29
    0166
  • Longhorn怎么实现Kubernetes集群的持久化存储

    Longhorn是Kubernetes社区开发的一种持久化存储解决方案,它可以为Kubernetes集群提供高可用、高性能的持久化存储,本文将详细介绍如何使用Longhorn实现Kubernetes集群的持久化存储。Longhorn简介Longhorn是一个开源项目,由VMware开发并贡献给了CNCF(云原生计算基金会),它提供了一……

    2023-12-19
    0141
  • BI平台的作用是什么?

    BI平台的作用一、引言在现代商业环境中,数据已成为企业的重要资产,随着信息技术的飞速发展,企业能够收集到的数据量呈指数级增长,如何从海量数据中提取有价值的信息,并将其转化为实际的业务决策,成为企业面临的一大挑战,商业智能(Business Intelligence, 简称BI)平台应运而生,它通过集成多种数据分……

    2024-12-06
    04

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入