基于 flask 框架的模拟instagram 图片分享网站的开发 4

news/2024/5/12 4:06:29/文章来源:https://blog.csdn.net/zhyh1435589631/article/details/51875654

1. 摘要

这次添加的功能是 个人页图片上传功能和图片详情页评论异步加载功能
传送门:
基于 flask 框架的模拟instagram 图片分享网站的开发 3
基于 flask 框架的模拟instagram 图片分享网站的开发 2
基于 flask 框架的模拟instagram 图片分享网站的开发 1

2. 流程

2.1 添加评论功能

  1. 首先为点击的空间添加id 方便js 查找

    <section class="discuss-edit">
    <a class="icon-heart-empty"></a>
    <input placeholder="添加评论..." id = "jsCmt" type="text">
    <button class="more-info" id = "jsSubmit">更多选项</button>
    </section>
  2. 添加js 响应文件

    $(function () {var oExports = {initialize: fInitialize,encode: fEncode};oExports.initialize();function fInitialize() {var that = this;var sImageId = window.imageId;var oCmtIpt = $('#jsCmt');var oListDv = $('ul.js-discuss-list');// 点击添加评论var bSubmit = false;$('#jsSubmit').on('click', function () {var sCmt = $.trim(oCmtIpt.val());// 评论为空不能提交if (!sCmt) {return alert('评论不能为空');}// 上一个提交没结束之前,不再提交新的评论if (bSubmit) {return;}bSubmit = true;$.ajax({url: '/addcomment/',type: 'post',dataType: 'json',data: {image_id: sImageId, content: sCmt}}).done(function (oResult) {if (oResult.code !== 0) {return alert(oResult.msg || '提交失败,请重试');}// 清空输入框oCmtIpt.val('');// 渲染新的评论var sHtml = ['<li>','<a class="_4zhc5 _iqaka" title="', that.encode(oResult.username), '" href="/profile/', oResult.user_id, '">', that.encode(oResult.username), '</a> ','<span><span>', that.encode(sCmt), '</span></span>','</li>'].join('');oListDv.prepend(sHtml);}).fail(function (oResult) {alert(oResult.msg || '提交失败,请重试');}).always(function () {bSubmit = false;});});}function fEncode(sStr, bDecode) {var aReplace =["&#39;", "'", "&quot;", '"', "&nbsp;", " ", "&gt;", ">", "&lt;", "<", "&amp;", "&", "&yen;", "¥"];!bDecode && aReplace.reverse();for (var i = 0, l = aReplace.length; i < l; i += 2) {sStr = sStr.replace(new RegExp(aReplace[i],'g'), aReplace[i+1]);}return sStr;};});

    简单的分析一下这段代码:
    点击提交之后, 通过 ajax 请求, 将 评论内容和图片id 通过post 方式, 发送到 路由‘ /addcomment/’上面, 后端处理后, 返回所需要的 json 数据 (code, username, user_id), 实现相应html 代码加载

  3. 添加评论的路由响应

    @app.route('/addcomment/', methods=['POST'])
    def addcomment():image_id = int(request.values['image_id'])content = request.values['content'].strip()comment = Comment(content, image_id, current_user.id)db.session.add(comment)db.session.commit()map = {'user_id':current_user.id, 'username' : current_user.username, 'code':0}return json.dumps(map)

2.2 图片上传功能

  1. 添加相应的前端响应

    {% if current_user.id == user.id %}<span class="verified" title="已验证">已验证</span><span class="_jxp6f _e616g" style="display:inline-block;position:relative;"><form method="post" action="/upload/" enctype="multipart/form-data"><button class="btn-success">上传图片</button><input name="file" type="file" onchange="this.parentNode.submit()" style="opacity:0;position:absolute;top:0;left:0;display:block;width:100%;height:100%;"></form></span><button class="more-info">选项</button>{%endif%}
  2. 同时创建存储路由
    这里面逻辑流程很简单, 首先从http的post 请求中获取file文件流, 并将其保存在本地(或者云服务器端), 同时返回一个图片的访问地址, 以及定义一个相应的访问该图片的路由即可
    下面是存储本地的代码

def save_to_local(file, file_name):save_dir = app.config['UPLOAD_DIR']file.save(os.path.join(save_dir, file_name))return '/image/' + file_name@app.route('/image/<image_name>')
def view_image(image_name):return send_from_directory(app.config['UPLOAD_DIR'], image_name)@app.route('/upload/', methods=['POST'])
def upload():file = request.files['file']if file.filename.find('.') > 0:file_ext = file.filename.rsplit('.', 1)[1].strip().lower()if file_ext in app.config['ALLOWED_EXT']:file_name = str(uuid.uuid1()).replace('-', '') + '.' + file_extif app.config['SAVE_IN_LOCAL'] == True:url = save_to_local(file, file_name)else:url = save_file_to_cloud(file_name, file)if url != None:db.session.add(Image(url, current_user.id))db.session.commit()return redirect('/profile/%d/' % current_user.id)

这是存储在 云端的api

access_key = app.config['QINIU_ACCESS_KEY']
secret_key = app.config['QINIU_SECRET_KEY']
bucket_name = app.config['QINIU_BUCKET_NAME']q = Auth(access_key, secret_key)def save_file_to_cloud(save_filename, source_file):#生成上传 Token,可以指定过期时间等token = q.upload_token(bucket_name, save_filename)filepath = os.path.join(app.config['UPLOAD_DIR'], save_filename)source_file.save(filepath)ret, info = put_file(token, save_filename, filepath)# ret, info = put_stream(token, save_filename, source_file.stream,#                        "qiniu" ,os.fstat(source_file.stream.fileno()).st_size)print infoif info.status_code == 200:return os.path.join(app.config['QINIU_DOMAIN'], save_filename)return None

3. 运行效果

输入评论前
这里写图片描述
输入评论后
这里写图片描述
个人主页
这里写图片描述

4. 工程地址

https://code.csdn.net/zhyh1435589631/instagram_simulation/tree/master

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_856903.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 flask 框架的模拟instagram 图片分享网站的开发 7 (爬虫机器人)

1. 前言 我们之前使用flask实现了一个模拟instagram的图片分享网站的开发&#xff0c; 但是图片的更新需要用户上传&#xff0c; 但是由于用户比较少&#xff0c; 鉴于这个问题&#xff0c; 我们就考虑引入一个爬虫机器人&#xff0c; 自动的向web程序相关的数据库表项中写入数…

url带斜杠和不带斜杠对seo优化的影响

点我进入原文 ps: seo 是指搜索引擎优化 url带斜杠和不带斜杠对seo优化的影响 作为seo的专员对于这个问题&#xff0c;我觉得很多细心的人都能发现&#xff0c;这二者的区别&#xff0c;但是不知道其中奥妙。今天博主给大家说说关于搜索引擎网址中带/与不带/对于seo的影响。 在…

高并发高流量网站架构

http://blog.csdn.net/SmartTony/archive/2010/09/09/5874485.aspx Web2.0的兴起&#xff0c;掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念&#xff0c;细分了网站功能和用户群&#xff0c;不仅成功的造就了一大批新生的网站&#xff0c;也极大的方便了上网…

从“奥运门票网站800万访问量”想到的成本、质量、进度、风险等关系

看到这个新闻后颇有一番滋味&#xff0c;更体验到我一直关注的软件性能着实无处不在&#xff0c;这个案例也确实值得我们好好反思一下。 不知道网友们有没有报名参加国际日语考试的——这个网站每年05年前都有人不能报名&#xff0c;因为报名人数太多&#xff0c;所以报名当日大…

h5跳微信小程序流程实现——使用云函数,不开通静态网站

官方开源库&#xff1a; GitHub TCloudBase/WXSEVER-SMS 参考教程&#xff1a; https://developers.weixin.qq.com/community/develop/doc/000ae2a7a7c9402a4d8bca2875b409 此教程为官方提供&#xff0c;包含视频文档 步骤&#xff1a; 1. 开通云开发 2. 新建云函数 ope…

搜索引擎SEO外挂:一边搜索,一边看PageRank

搜索引擎SEO外挂&#xff1a;一边搜索&#xff0c;一边看PageRank 下载地址&#xff1a;多么乐站长工具 我原来曾写过一篇统计分析搜索引擎排名和Page Rank 关联分析 的文章。很多人引用&#xff0c;回复和我讨论了我的结论。有赞成的&#xff0c;有反对的&#xff0c;有鼓励的…

seo优化:把百度放进数据库

seo优化:把百度放进数据库 有时候我想&#xff0c;能把百度的数据放进数据库&#xff0c;用广大程序员熟悉的sql语句查询百度的搜索结果应该是一个不错的主意。在这方面Google早已经跨出了一大步&#xff0c;利用Google Search API 把Google的搜索结果放进数据库是很容易办到得…

商业网站 第八章 注册登陆模板设计

注册——插入记录 服务器行为——添加——插入记录——连接:web_ljdata——插入到表格&#xff1a;T_user——获取值自&#xff1a;form1(注册表单&#xff09;——表单元素——注册成功后&#xff1a;插入后转到&#xff08;注册成功表单&#xff09; 验证登陆信息 数据库面板…

网站推荐机制中的艺术、科学与商务问题

网站推荐机制是电子商务或内容网站的核心功能之一。例如你在一个网站买了一本书后&#xff0c;网站会推荐其他你可能会感兴趣的书。这被认为是亚马逊等电子商务巨头成功的关键。本文对几个出色的推荐系统进行了较透彻的分析。 2006年10月&#xff0c;Netflix搞了一次不寻常的有…

平面设计素材网站-庞姿姿

哈喽&#xff0c;大家好&#xff01;今天为大家分享的是免费的平面设计素材网站&#xff0c;设计类网站是大家在所难免需要的了吧&#xff0c;下面就是我发现的比较好用的免费的平面设计素材网站&#xff0c;感兴趣的小伙伴看过来&#xff0c;如果你还发现其它好的网站评论一起…

OpenCms创建网站过程图解——献给OpenCms的初学者们

很多人都听说了OpenCms&#xff0c;知道了它的强大&#xff0c;索性的下载安装了&#xff0c;终于见到了久违OpenCms&#xff0c;看到了它简洁的界面&#xff0c;欣喜过后却不免一脸茫然&#xff0c;这个东西怎么用&#xff0c;我怎么用它来建站&#xff0c;从哪开始&#xff0…

视觉素材-免费高清!10个无版权限制的大图特供网站

今天为大家整理目前优秀的提供免费图片素材资源网站&#xff0c;这些网站的图片质量相当高&#xff0c;大部分为高分辨率&#xff08;高解析&#xff09;&#xff0c;并且&#xff0c;最重要的是&#xff0c;它是免费的&#xff0c;无版权限制&#xff01;同时具备免费、高清&a…

获取任意网站的图标,标题栏logo,网站logo的方法

不错呦~我想要这个图标怎么办呢&#xff1f; 直接使用网址加上&#xff1a; https://csdn.net/favicon.ico 获取到了 说明&#xff1a;这种方法适用于百分之九十的站点&#xff0c;如果你有想要使用的LOGO或者ico可以使用此方法简单获取。

【引用】iphone开发的好网站

分享iphone开发的好网站&#xff0c;希望大家也能提供一些分享下 收藏 1、http://developer.apple.com/iphone/library 这个是官方的代码实例 2、www.cocoachina.com 这个网站比较适合初期开发者&#xff0c;上面的版主之类的也比较热心&#xff0c;一般的问题都会提供帮助 3…

[.Net Core学习一]网站发布

1.首先点击图片IIS上的模块 判断是否存在 如果没有去官网下载 安装好后 按照formwork版发布即可 结果

功能超全的在线文件转换网站

转自http://blog.360converter.com/archives/1314 最近在做一个图标&#xff0c;找了很多的网站&#xff0c;有些根本就不能转换&#xff0c;有些可以转换&#xff0c;不过转换的出来的icon文件超级大&#xff0c;一个6464的icon转换出来达到了几百k&#xff0c;甚至上1M。不过…

免费文字转语音的网站

此文链接&#xff1a;http://blog.360converter.com/archives/1318 在通常的工作生活中&#xff0c;有时&#xff0c;我们需要将一段话&#xff0c;一段文字转换语音&#xff0c;语音文件以音频格式存储传播&#xff0c;如mp3, wma,wav等格式。 为了完成上述功能&#xff0c…

利用一句话木马获取网站web权限

1.登录网站后台&#xff0c;寻找文件上传地方 进入网站管理后台并登录管理员帐户和密码&#xff0c;寻找文件上传点。此网站有多个可上传文件的地方&#xff0c;在这我们选择附件管理页面中的上传附件。 2.写入一句话木马文件&#xff0c;并上传到网站上 为方便寻找可直接在…

使用LNMP架构部署动态网站环境

使用LNMP架构部署动态网站环境 实验环境 linux操作系统&#xff0c;本文用的是centos7版本的 实验是需要的安装软件包 链接&#xff1a;https://pan.baidu.com/s/11f4Y6GO0ehQDjc-idUJ5lA 提取码&#xff1a;nxfv 复制这段内容后打开百度网盘手机App&#xff0c;操作更方便…