在这个信息爆炸的时代,社区信息发布平台成为了连接邻里、分享资讯的重要工具。今天,我们将用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)