BBS论坛(二十)
2024-10-11 02:37:40
20.1.cms添加轮播图后台逻辑代码完成
(1)apps/models.py
from exts import db
from datetime import datetime class BannerModel(db.Model):
__tablename__ = 'banner'
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(255), nullable=False)
img_url = db.Column(db.String(255), nullable=False)
link_url = db.Column(db.String(255), nullable=False)
priority = db.Column(db.Integer, default=0)
create_time = db.Column(db.DateTime, default=datetime.now)
(2)manage.py
from apps.models import BannerModel
(3)生成到数据库
python manage.py db migrate python manage.py db upgrade
(4)cms/forms.py
class AddBannerForm(BaseForm):
name=StringField(validators=[InputRequired(message='请输入轮播图名称')])
img_url=StringField(validators=[InputRequired(message='请输入轮播图链接')])
link_url=StringField(validators=[InputRequired(message='请输入轮播图跳转链接')])
priority=IntegerField(validators=[InputRequired(message='请输入轮播图优先级')])
(5)cms/views.py
@bp.route('/abanner/',methods=['POST'])
def abanner():
form=AddBannerForm(request.form)
if form.validate():
name=form.name.data
img_url=form.img_url.data
link_url=form.link_url.data
priority=form.priority.data
banner=BannerModel(name=name,img_url=img_url,link_url=link_url,priority=priority)
db.session.add(banner)
db.session.commit()
return restful.success()
else:
return restful.params_error(message=form.get_error())
20.2.cms添加轮播图前台逻辑完成
(1)cms/js/banner.js
$(function () {
$('#save_banner_btn').click(function (event) {
event.preventDefault();
var dialog = $('#banner-dialog');
var nameInput = $("input[name='name']");
var imgInput = $("input[name='img_url']");
var linkInput = $("input[name='link_url']");
var priorityInput = $("input[name='priority']"); var name = nameInput.val();
var img_url = imgInput.val();
var link_url = linkInput.val();
var priority = priorityInput.val(); if (!name || !img_url || !link_url || !priority) {
zlalert.alertInfo('请输入完整的轮播图数据');
return;
} zlajax.post({
'url': '/cms/abanner/',
'data': {
'name': name,
'img_url': img_url,
'link_url': link_url,
'priority': priority
},
'success': function (data) {
if (data['code'] == 200) {
dialog.modal('hide');
window.location.reload()
} else {
zlalert.alertInfo(data['message']);
}
},
'fail': function (error) {
zlalert.alertNetworkError()
}
});
}); });
(2)cms/cms_banners.html
{% from 'common/_macros.html' import static %} <script src="{{ static('cms/js/banners.js') }}"></script>
(3)cms/views.py
@bp.route('/banners/')
@login_required
def banners():
banners = BannerModel.query.all()
return render_template('cms/cms_banners.html',banners=banners)
(4)cms_banners.html
<tbody>
{% for banner in banners %}
<tr>
<td>{{ banner.name }}</td>
<td><a href="{{ banner.img_url }}" target="_blank">{{ banner.img_url }}</a></td>
<td><a href="{{ banner.link_url }}" target="_blank">{{ banner.link_url }}</a></td>
<td>{{ banner.priority }}</td>
<td>{{ banner.create_time }}</td>
<td>
<button class="btn btn-default btn-xs edit-banner-btn">编辑</button>
<button class="btn btn-danger btn-xs delete-banner-btn">删除</button>
</td>
</tr> {% endfor %} </tbody>
最新文章
- 改变Activity启动时的默认动画
- stm32 hid 键盘描述
- 屌丝程序员的梦想 (六) 我也写个开源CMS
- jquery radio的取值 radio的选中 radio的重置
- VS常用技巧
- I.MX6 Android iperf3 porting failed
- 轻松搭建自己的Linux发行版本
- Attribute(两)——定义自己的特色+Asp.net MVC中间filter详细解释
- 每天一个Linux命令(17)--whereis命令
- Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)
- [原创]手把手教你写网络爬虫(7):URL去重
- 编译GDAL支持MySQL
- python爬取网易云周杰伦所有专辑,歌曲,评论,并完成可视化分析
- 使用django我的第一个简单项目流程
- django 图书管理系统
- 在Emacs中使用git操作
- OSChina 周日乱弹 —— 超酷炫 58 页年终总结,笑喷!
- Spark的Java API例子详解
- Bolt XML和JQBolt Lua代码自动补全插件配置教程
- spark java wordCount实例
热门文章
- Redis持久化persistence
- 课堂小记---JavaScript(3)
- 2018-2019-2 20165239《网络对抗技术》Exp4 恶意代码分析
- webstorm调试
- macof python攻击脚本
- 【2019雅礼集训】【可持久化线段树】【模型转化】D1T2Permutation
- 07flask中session及cookie的用法。
- MyBatis3系列__06查询的几点补充
- A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
- 用python写一个非常简单的QQ轰炸机