f103148ebf
基于 Flask + MySQL + Bootstrap 5 的全栈个人资料库管理系统。 主要功能: - 管理员/普通用户双角色权限体系,全站登录保护 - 资源管理:文本、图片、音频、视频四类资源 - 三种添加方式:本地上传(拖拽)、URL 后台下载、磁力下载(aria2c) - 在线预览:文本、图片、HTML5 音视频播放器 - 安全:bcrypt 加盐密码哈希、CSRF 防护、SQLAlchemy ORM 防注入 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
52 lines
2.0 KiB
HTML
52 lines
2.0 KiB
HTML
{% extends 'base.html' %}
|
|
{% block title %}编辑 — {{ resource.title }}{% endblock %}
|
|
|
|
{% block breadcrumb %}
|
|
<ol class="breadcrumb mb-0">
|
|
<li class="breadcrumb-item"><a href="{{ url_for('resources.list_resources') }}">我的资源</a></li>
|
|
<li class="breadcrumb-item"><a href="{{ url_for('resources.detail', resource_id=resource.id) }}">{{ resource.title }}</a></li>
|
|
<li class="breadcrumb-item active">编辑</li>
|
|
</ol>
|
|
{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="row justify-content-center">
|
|
<div class="col-lg-7">
|
|
<div class="card shadow-sm">
|
|
<div class="card-header">
|
|
<h5 class="mb-0"><i class="bi bi-pencil me-2"></i>编辑资源信息</h5>
|
|
</div>
|
|
<div class="card-body p-4">
|
|
<form method="POST" novalidate>
|
|
{{ form.hidden_tag() }}
|
|
<div class="mb-3">
|
|
<label class="form-label fw-medium">标题</label>
|
|
{{ form.title(class='form-control' + (' is-invalid' if form.title.errors else '')) }}
|
|
{% for e in form.title.errors %}<div class="invalid-feedback">{{ e }}</div>{% endfor %}
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-medium">描述</label>
|
|
{{ form.description(class='form-control', rows=3) }}
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label fw-medium">标签(逗号分隔)</label>
|
|
{{ form.tags(class='form-control', placeholder='tag1, tag2') }}
|
|
</div>
|
|
<div class="mb-4 form-check form-switch">
|
|
{{ form.is_public(class='form-check-input', role='switch') }}
|
|
<label class="form-check-label">公开资源</label>
|
|
</div>
|
|
<div class="d-flex gap-2">
|
|
<button type="submit" class="btn btn-primary">
|
|
<i class="bi bi-save me-1"></i>保存
|
|
</button>
|
|
<a href="{{ url_for('resources.detail', resource_id=resource.id) }}"
|
|
class="btn btn-secondary">取消</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %}
|