python_flask小项目实例-编一个小网站

news/2024/5/12 9:42:58/文章来源:https://blog.csdn.net/weixin_30861797/article/details/97194845

要完成是这样一个网站:http://www.yushu.im/,该网站主要是赠送书的一个平台(公益性的)

网站框架功能:

网站的搭建

前期准备(用pycharm直接创建应该也可以,感觉直接创简单)

新建文件夹,创建虚拟环境(创建虚拟环境的好处就不说了),安装需要的包。

1)安装pipenv包,pip install pipenv

2) 在项目文件下用pipenv创建虚拟环境,pipenv install

3)按照提示pipenv shell进入虚拟环境

进入虚拟环境后发现只有虚拟环境提供的包:

4)安装一些需要的包,首先flask,这时候安装不是pip,是pipenv install flask

关于虚拟环境pipenv

进入:pipenv shell

退出:exit

安装与卸载包:pipenv install 包名,pipenv uninstall 包名

查看包的安装关系: pipenv graph          详细看gitHub官方文档。

5)开发工具

pycharm,数据库mysql(直接安装Xampp),Navicat(数据库可视化管理工具),安装过程略

热身,补知识:

1)建立文件config.py作为配置文件,在主文件夹中肯定要导入配置文件,一般是from。flask有一个高尚的方法

业务代码开始

书籍搜索:

一般支持三种搜索方式:书名(精准与模糊),作者,ISBN

也可说两种:关键字检索,ISBN号检索

1)搜索的数据哪里来?

数据库?当然不是,没有这么多。这里依靠外部的API完成

图书数据的基地址:http://t.yushu.im

关键字搜索:http://t.yushu.im/v2/book/search?q={}&start={}&count={}        解释三个参数:q传递关键字,因为返回很多记录,start与count控制分页

ISBN搜索:http://t.yushu.im/v2/book/isbn/{isbn}                                         

也可以用豆瓣API:http://api.douban.com/v2/book      (此博客用的是上面api,豆瓣的API有访问频率控制)

为了方便编程,理解一下isbn,他有两种形式,isbn13(13个数字组成);isbn10(10个数字组成,不过中间可能含有‘ - ’)

为了方便阅读等好处:建立文件夹helper,放一些被调用的函数。

 

#!/usr/bin/env python
#-*-coding:utf-8 -*-'''
编写一些函数,用于调用
'''def is_isbn_or_key(word):"""判读输入的参数是关键还是isbn,isbn有两种,isbn10,isbn13:param word: q:return: 'key'  或者 ‘isbn’"""isbn_or_key = 'key'if len(word) == 13 and word.isdigit():isbn_or_key = 'isbn'short_word= word.replace('-', '')if '-' in word and len(short_word)==10 and short_word.isdigit():isbn_or_key = 'isbn'return isbn_or_key
helper

这样视图函数就比较干净:(当然还没写完)

 如何在python代码中调用上面的外部API(按照restful标准来的)?

 

 先观察API返回的数据类型,找一个isbn编号为9787501524044,访问http://t.yushu.im/v2/book/isbn/9787501524044,发现是json格式。

但是当我们输入错误数据时(isbn错误),返回{"msg": "book not found", "code": 2000}。所以这种异常也要考虑。HTTP 200表示成功

写一个http请求函数(放在http.py中)

# 两种http请求,urllib(from urllib import request)与requestsimport requestsclass HTTP:@staticmethoddef get(url, return_json=True):r = requests.get(url)           # 因为我们调用的API是get型,json型if r.status_code != 200:return {} if return_json else ''return r.json() if return_json else r.text# 与上面等价# if r.status_code == 200:#     if return_json:#         return r.json()#     else:#         return r.text()# else:#     if return_json:#         return {}#     else:#         return  ''

请求API之前,要拿到url,所以还要写一个函数拼接url,并且调用上面的请求函数,拿到结果给视图函数search()用.这里先简单一点,默认关键字搜索的后面两个参数。

#!/usr/bin/env python
#-*-coding:utf-8 -*-from http import HTTPclass YuShuBook:isbn_url = 'http://t.yushu.im/v2/book/isbn/{} 'keyword_url = 'http://t.yushu.im/v2/book/search?q={}&start={}&count={}'@classmethoddef search_by_isbn(cls, isbn):url = cls.isbn_url.format(isbn)result = HTTP.get(url)# python中将json转化为dictreturn result@classmethoddef search_by_keyword(cls, keyword, count=15,start=0):url = cls.keyword_url.format(keyword, count, start)result = HTTP.get(url)return result
YuShu_Book.py

因此,此时的搜索的视图函数为(未写完),进一步整理,将所有视图函数放在app文件夹下对应的文件夹,这里放在web文件下book.py中。因为启动文件要干净。

def search(q, page):isbn_or_key = helper.is_isbn_or_key(q)if isbn_or_key == 'isbn':result = YuShuBook.search_by_isbn(q)else:result = YuShuBook.search_by_keyword(q)return jsonify(result)

 将试图函数放在其他文件中,@app.toute()报错怎么解决。这里要用到flask的蓝图。flask核心对象app就像一个插座,蓝图不能独立存在,它必须插入flask核心对象中的。蓝图是如何解决视图函数分文件的尼?我们可以注册多个蓝图,然后将不同的视图函数注册到不同的蓝图中。虽然app是万能插座,视图函数也可以直接注册到app中,但是不好,不方便阅读管理的等等。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/maxiaonong/p/10573896.html

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

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

相关文章

网站sitemap.xml 无法访问

<?xml version"1.0" encoding"UTF-8"?> <?xml-stylesheet type"text/xsl" href"sitemap.xsl"?> <!-- Free Sitemap Generator http://www.sitemapx.com --> <urlset xmlns"http://www.sitemaps.org/sch…

常见的免费遥感卫星数据服务网站

** 常见的免费遥感卫星数据服务网站 ** 其他的文章链接&#xff1a; 0.遥感常用资料一览&#xff1a; https://blog.csdn.net/weixin_44143671/article/details/101058973 1.ArcGIS操作视频与数据&#xff1a; https://blog.csdn.net/weixin_44143671/article/details/1009…

sql server ssl安全错误_网站HTTPS之路——安装、配置SSL证书及强制开启HTTPS

从2018年年底开始&#xff0c;谷歌浏览器Chrome对于http://站点将显示不安全的标志。所以最近终于开始琢磨SSL证书的事&#xff0c;让自己的网站不再显示不安全。一、证书申请对于个人站点而言&#xff0c;当然首选免费的SSL证书&#xff0c;毕竟财力有限&#xff0c;况且用户和…

开发好还是实施好_企业建站是选择模板建站好还是定制开发?

目前&#xff0c;很多企业找网站建设公司做网站&#xff0c;一般有两种选择&#xff0c;定制网站和模板网站。然而&#xff0c;这两种网站建设方法的价格相差甚远。企业应根据实际需要选择自己的网站建设方法。那么企业的网站建设选择定制还是模板好&#xff1f;首先&#xff0…

买的美国服务器怎么上传文件,美国服务器部署网站的时候要如何迁移数据

随着业务的不断发展不少租用美国服务器部署网站的用户渐渐的会发现原先的配置已经无法满足业务的需求&#xff0c;而如果要更换服务器的配置的话一般少不了对网站的数据进行迁移&#xff0c;那么具体需要做哪些工作呢&#xff0c;今天USA-IDC就来简单介绍一下网站迁移的主要步骤…

想学习Python? 知道这些开源电子书网站吗?

Python开源电子书网站&#xff0c;各个领域的精品&#xff0c;你值得学习收藏。 Python 入门 《A Byte of Python&#xff08;简明 Python 教程&#xff09;》 豆瓣评分&#xff1a;8.7 一句话介绍&#xff1a;Python 初学者的极佳教材。 网址&#xff1a;https://wizardfor…

程序员的强迫症 — 便捷打开常用网站

引言 根据上一篇 程序员的强迫症–如何让电脑桌面变得非常干净&#xff1f;可以让电脑桌面非常简洁、干净&#xff0c;win r 快速打开应用程序、常用文件夹。 这篇就介绍 win r 便捷打开常用网站&#xff0c;优化管理 我们在日常生活、办公中都有一些常用网站&#xff0c;我们…

.网站数字证书制作与使用

网站服务器与数字证书由于Windows NT系统的容易维护&#xff0c;很多单位或者ISP都采用它&#xff0c;大部分是做WEB服务器使用。虽然IIS存在很多新的漏洞和安全问题&#xff0c;但只要我们做好合理的安全配置&#xff0c;还是可以避免很多安全隐患的。因此&#xff0c;本文选择…

自学宝典:10个学习Android开发的网站推荐

摘要&#xff1a;本文作者Tikitoo总结自己在学习Android开发过程中发现的好网站&#xff0c;包括Android Developers、GitHub等&#xff0c;以给初学者一些建议&#xff0c;少走一些弯路。 1. Android Developers 作为一个Android开发者&#xff0c;官网的资料当然不可错过&am…

大型网站架构体系的演变

&#xfeff;&#xfeff;转载地址&#xff1a;http://mp.weixin.qq.com/s?__bizMjM5MzA0OTkwMA&mid209324678&idx1&sn74ad681fa74547426493f2f44af045cc#rd 互联网上有很多关于网站架构的各种分享&#xff0c;有些主要是从运维和基础架构的角度去分析的&#xff…

电脑证书错误即上网站打不开提示证书错误

上一些网站&#xff0c;老打不开&#xff0c;提示我证书错误&#xff1b;出现网站证书错误&#xff0c;一般有以下几个原因&#xff1a;首先是网站证书过期&#xff0c;其次是系统浏览器自身设置问题&#xff0c;下面为大家介绍下不错的解决方法 最近我上一些网站&#xff0c;老…

考证必备的五个网站

大学期间&#xff0c;考证是额外的技能加持。 这种技能可能成为你的副业&#xff0c;也有可能在以后应聘时因此而获得HR的青睐。 所以说&#xff0c;考证&#xff0c;尤其是考一些必备证书&#xff0c;是很有必要的。 大多数人都曾有这样的感受&#xff0c;很想要考某一个证件。…

一行命令发布一个网站

一行命令发布一个网站1.通常发布一个网站&#xff08;静态网站&#xff0c;就是不需要后台和数据库&#xff09; 我们需要把文件放到一台服务器上。Zeit Now&#xff0c;只需要一行命令就能将本地的网站发布到Zeit服务器上&#xff0c;得到一个域名来访问该网站。 Vercel提供免…

Nativefier一行代码快速将网站打包成桌面程序

Nativefier简介 Nativefier是一个命令行工具&#xff0c;仅仅通过一行代码就可以轻松地为任何的网站创建桌面应用程序&#xff0c;应用程序通过Electron打包成系统可执行文件。 作者github&#xff1a; https://github.com/jiahaog/nativefier安装 建议使用cnpm全局安装 cn…

【实战】教你如何使用 Bootstrap 搭建一个企业网站——《Bootstrap实战》

文章目录一、准备启动文件1.完成之前的效果&#xff1a;2.完成之后的效果3.文件清单4.本章目标二、页头区1.需要完成的效果特性&#xff1a;2.将Logo放在导航条上方3.调整导航条三、添加实用导航1.要实现的效果2.添加代码和样式四、调整响应式导航五、调整配色六、调整折叠后的…

【笔记】《Bootstrap实战》——第5章 电子商务网站

文章目录一、商品页的标记二、面包屑、页面标题和分页导航三、调整商品网格四、侧边栏和筛选选项1.基本布局2.Clearance Sale按钮3.选项列表4.为选项链接添加Font Awesome图标复选框5.使用LESS混入在栏中对齐选项6.针对平板和手机调整选项列表布局7.在手机上折叠选项面板构建了…

【笔记】《Bootstrap实战》——第6章 单页营销网站

文章目录一、概况二、初始文件三、了解页面内容四、调整导航条五、定制高清图六、美化功能列表七、装饰用户评论区1.定位及美化说明2.调整说明元素的位置3.添加 Bootstrap 的网格类4.下载并链接 JavaScript 插件5.初始化 Masonry 插件6.切齐图片7.适应小微屏幕八、吸引人的价目…

【笔记】个人博客建立(域名选择、网站备案、公安联网备案、安全评估报告)

文章目录一、域名选择二、网站备案三、公安联网备案四、安全评估报告五、域名邮箱一、域名选择 域名查询结果_域名信息_域名交易-万网-阿里云旗下品牌 既然是个人网站&#xff0c;域名最好是带有个人名字全拼&#xff0c;或是网名全拼&#xff0c;我选出wenda.zone和gaowenda.c…

【实战】Windows使用任务计划执行批处理定时重启IIS部署的网站

文章目录一、windows定时任务1.Windows 任务计划程序2.Windows Service二、命令行方式启停IIS网站三、例&#xff1a;定时启停IIS网站目标任务步骤查看成果一、windows定时任务 1.Windows 任务计划程序 直接搜索&#xff1a; 或是&#xff1a;计算机(右键)->管理 &#x…

ASIHTTPRequest-断点续传需要原网站支持!

转&#xff1a;http://zyc-to.blog.163.com/blog/static/17152400201110221114526/ 从0.94版本开始&#xff0c;ASIHTTPRequest可以恢复中断的下载 12345678910111213141516171819- (IBAction)resumeInterruptedDownload:(id)sender{NSURL *url [NSURL URLWithString:"ht…