Python打造在线旅游攻略发布系统

在这个信息爆炸的时代,旅游攻略成为了许多人出行前的必备参考资料。如何高效地发布和管理这些攻略,成为了旅游爱好者和内容创作者的一大难题。今天,我们将用Python语言,打造一个功能齐全的在线旅游攻略发布系统,让攻略分享变得更加便捷。

Python打造在线旅游攻略发布系统

项目背景

随着互联网的普及,越来越多的人选择在线获取旅游信息。传统的攻略发布方式,如博客、论坛,虽然也能满足基本需求,但在用户体验和信息管理上存在诸多不足。基于此,我们决定开发一个专门的旅游攻略发布系统,旨在提供更好的内容展示和互动体验。

技术选型

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

  • 前端:HTML、CSS、JavaScript
  • 后端:Python、Flask框架
  • 数据库:SQLite

Flask是一个轻量级的Web框架,适合快速开发和部署小型项目。SQLite作为轻量级数据库,能够满足我们初期数据存储的需求。

系统功能

1. 用户注册与登录

用户可以通过注册账号,登录系统,发布和管理自己的旅游攻略。我们使用Flask的认证机制,确保用户信息的安全。

from flask import Flask, render_template, request, redirect, url_for, session
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///travel.db'
app.config['SECRET_KEY'] = 'your_secret_key'
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_hash = db.Column(db.String(120), nullable=False)

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

@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).first()
        if user and check_password_hash(user.password_hash, password):
            session['user_id'] = user.id
            return redirect(url_for('dashboard'))
    return render_template('login.html')

2. 攻略发布与管理

用户登录后,可以发布新的旅游攻略,并对已发布的攻略进行编辑和删除。

class Guide(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'))

@app.route('/dashboard')
def dashboard():
    if 'user_id' not in session:
        return redirect(url_for('login'))
    user_guides = Guide.query.filter_by(user_id=session['user_id']).all()
    return render_template('dashboard.html', guides=user_guides)

@app.route('/new_guide', methods=['GET', 'POST'])
def new_guide():
    if request.method == 'POST':
        title = request.form['title']
        content = request.form['content']
        new_guide = Guide(title=title, content=content, user_id=session['user_id'])
        db.session.add(new_guide)
        db.session.commit()
        return redirect(url_for('dashboard'))
    return render_template('new_guide.html')

@app.route('/edit_guide/<int:guide_id>', methods=['GET', 'POST'])
def edit_guide(guide_id):
    guide = Guide.query.get(guide_id)
    if request.method == 'POST':
        guide.title = request.form['title']
        guide.content = request.form['content']
        db.session.commit()
        return redirect(url_for('dashboard'))
    return render_template('edit_guide.html', guide=guide)

@app.route('/delete_guide/<int:guide_id>')
def delete_guide(guide_id):
    guide = Guide.query.get(guide_id)
    db.session.delete(guide)
    db.session.commit()
    return redirect(url_for('dashboard'))

3. 攻略展示与搜索

游客可以浏览所有发布的攻略,并通过关键词搜索感兴趣的攻略。


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

@app.route('/search')
def search():
    query = request.args.get('query')
    search_results = Guide.query.filter(Guide.title.contains(query) | Guide.content.contains(query)).all()
    return render_template('search

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

31阅读

外国教程python,python编程教学视频

2026年09月02日

25阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

27阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读