Python打造在线社区信息发布平台

admin 2025-01-12 216 0

在这个信息爆炸的时代,社区信息发布平台成为了连接邻里、分享资讯的重要工具。今天,我们将用Python语言,从零开始打造一个功能齐全的在线社区信息发布平台。

Python打造在线社区信息发布平台

项目背景

社区信息发布平台旨在为居民提供一个便捷的信息交流渠道,涵盖公告通知、活动报名、二手交易等多种功能。通过这个平台,居民可以实时获取社区动态,参与社区活动,提升生活质量。

技术选型

为了实现这一目标,我们选择以下技术栈:

  • 后端:Python + Flask框架
  • 数据库:SQLite
  • 前端:HTML + CSS + JavaScript
  • 部署:Heroku

项目结构

项目目录结构如下:

community_platform/
│
├── app.py          # 主程序文件
├── requirements.txt # 依赖包
├── templates/      # 前端模板
│   ├── index.html
│   ├── login.html
│   └── register.html
├── static/         # 静态文件
│   ├── css/
│   ├── js/
│   └── images/
└── database.db     # 数据库文件

后端开发

1. 环境搭建

首先,安装Flask及其相关依赖:

pip install Flask Flask-SQLAlchemy

2. 数据库设计

使用SQLite作为数据库,定义用户和帖子模型:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True, nullable=False)
    password = db.Column(db.String(80), nullable=False)

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    user = db.relationship('User', backref=db.backref('posts', lazy=True))

db.create_all()

3. 路由与视图

实现用户注册、登录和发布帖子的功能:

from flask import request, render_template, redirect, url_for

@app.route('/')
def index():
    posts = Post.query.all()
    return render_template('index.html', posts=posts)

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        user = User.query.filter_by(username=username, password=password).first()
        if user:
            return redirect(url_for('index'))
        else:
            return '登录失败'
    return render_template('login.html')

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        new_user = User(username=username, password=password)
        db.session.add(new_user)
        db.session.commit()
        return redirect(url_for('login'))
    return render_template('register.html')

@app.route('/post', methods=['GET', 'POST'])
def post():
    if request.method == 'POST':
        title = request.form['title']
        content = request.form['content']
        new_post = Post(title=title, content=content, user_id=1)  # 假设当前用户ID为1
        db.session.add(new_post)
        db.session.commit()
        return redirect(url_for('index'))
    return render_template('post.html')

if __name__ == '__main__':
    app.run(debug=True)

前端开发

1. HTML模板

创建简单的HTML模板,用于展示首页、登录页、注册页和发帖页。

<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
    <title>社区信息平台</title>
</head>
<body>
    <h1>社区信息平台</h1>
    <a href="/post">发布新帖</a>
    <div>
        {% for post in posts %}
            <h2>{{ post.title }}</h2>
            <p>{{ post.content }}</p>
        {% endfor %}
    </div>
</body>
</html>

2. CSS样式

添加基本的CSS样式,提升用户体验。


/* static/css/style.css */
body {
    font-family: Arial, sans-serif;
    margin: 20px;
}

h1 {
    color: #333;
}

a {
    text-decoration: none;

评论(0)