Files
tech-blog/app/routes/admin/authors.py
hz4th_coder 503a9780b2 refactor: 拆分admin路由为模块化结构,端口改为16013
- 将 routes/admin.py (672行) 拆分为 routes/admin/ 包
- 按功能模块拆分:auth, dashboard, articles, categories, tags, settings, stats, upload, authors
- 端口从 16012 改为 16013
- 初始化数据库和管理员账户
2026-06-25 11:21:36 +08:00

63 lines
2.0 KiB
Python

"""作者管理路由"""
from flask import render_template, redirect, url_for, request, flash
from app.routes.admin import admin_bp, login_required
from app.services import AuthorService
@admin_bp.route('/authors')
@login_required
def authors():
"""作者列表"""
authors = AuthorService.get_all()
return render_template('admin/authors.html', authors=authors)
@admin_bp.route('/authors/create', methods=['GET', 'POST'])
@login_required
def author_create():
"""创建作者"""
if request.method == 'POST':
name = request.form.get('name')
avatar = request.form.get('avatar')
bio = request.form.get('bio')
website = request.form.get('website')
AuthorService.create(name=name, avatar=avatar, bio=bio, website=website)
flash('作者创建成功', 'success')
return redirect(url_for('admin.authors'))
return render_template('admin/author_form.html', author=None)
@admin_bp.route('/authors/<int:author_id>/edit', methods=['GET', 'POST'])
@login_required
def author_edit(author_id):
"""编辑作者"""
author = AuthorService.get_by_id(author_id)
if not author:
flash('作者不存在', 'danger')
return redirect(url_for('admin.authors'))
if request.method == 'POST':
AuthorService.update(author_id,
name=request.form.get('name'),
avatar=request.form.get('avatar'),
bio=request.form.get('bio'),
website=request.form.get('website')
)
flash('作者更新成功', 'success')
return redirect(url_for('admin.authors'))
return render_template('admin/author_form.html', author=author)
@admin_bp.route('/authors/<int:author_id>/delete', methods=['POST'])
@login_required
def author_delete(author_id):
"""删除作者"""
if AuthorService.delete(author_id):
flash('作者已删除', 'success')
else:
flash('删除失败', 'danger')
return redirect(url_for('admin.authors'))