Python利用Django写restful api接口的示例

  介绍

这篇文章给大家分享的是有关Python利用Django写restful api接口的示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

<强>前言

用Python如何写一个接口呢,首先得要有数据,可以用我们在网站上爬的数据。

大量的数据保存到数据库比较方便。我用的pymsql, pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前在python3.x中,PyMySQL取代了MySQLdb。

<强> 1。连接数据库

#,连接数据库,需指定字符集否则可能会报的错   时间=db  pymysql.connect(主机=發ocalhost",,用户=皉oot",,密码=?23“,,db=癿ysql",, charset=皍tf8mb4")   cursor =, db.cursor(), #,创建一个游标对象

<强> 2。创建数据库

cursor.execute (“DROP  TABLE  IF  EXISTS  meizi_meizis"), #,如果表存在则删除   ,#创建表的sql语句=,createTab “““create  table  meizi_meizis (   ,id  int  primary  key  auto_increment,   ,mid  varchar (10), not 空,   ,title  varchar (50),   ,picname  varchar (10),   ,page_url  varchar (50),   ,img_url  varchar (50)   ,);“““   ,cursor.execute (createTab), #,执行创建数据表操作

<强> 3。爬取数据

def  html(自我,,href,标题):=,lists  []=,,meiziid  href.split (& # 39;/& # 39;) [1]=,,html  self.request (href)=,,max_span  BeautifulSoup (html.text, & # 39; lxml # 39;); (& # 39; div # 39;,, class_=& # 39; pagenavi& # 39;) .find_all(& # 39;跨度# 39;)[2].get_text ()   ,for  page 拷贝范围(1,int (max_span), +, - 1):=,meizi , {}=,,page_url  href  +, & # 39;/& # 39;, +, str(页面)=,,img_html  self.request (page_url)=,,img_url  BeautifulSoup (img_html.text, & # 39; lxml # 39;); (& # 39; div # 39;,, class_=& # 39; main-image& # 39;); (& # 39; img # 39;) [& # 39; src # 39;】=,,picname  img_url [9: 4)   ,梅子[& # 39;meiziid& # 39;],=meiziid   ,梅子[& # 39;标题# 39;],=,标题   ,梅子[& # 39;picname& # 39;],=picname   ,梅子[& # 39;page_url& # 39;],=page_url   ,梅子[& # 39;img_url& # 39;],=img_url   ,lists.append(梅子),#,保存到返回数组中   ,return 列表

<强> 4。保存到数据库

def  all_url(自我,url):=,,html  self.request (url)=,,all_a  BeautifulSoup (html.text, & # 39; lxml # 39;); (& # 39; div # 39;,, class_=& # 39;所有# 39;).find_all(& # 39;一个# 39;)   ,for 指数,a 拷贝列举(all_a):=,,title  a.get_text ()=,,href  [& # 39; href # 39;】=,,lists  self.html (href,标题)   ,for 小姐:拷贝列表:   ,#打印(我[& # 39;meiziid& # 39;],,我[& # 39;标题# 39;],,我[& # 39;picname& # 39;],,我[& # 39;page_url& # 39;],,我[& # 39;img_url& # 39;])   ,#插入数据到数据库sql语句,% s用作字符串占位=,sql “INSERT  INTO “meizi_meizis”(“中期”,“标题”,‘picname’,‘page_url’,‘img_url’),值(% s, % s % s, % s, % s)“;   ,试一试:   cursor.execute才能(sql,,(我[& # 39;meiziid& # 39;],,我[& # 39;标题# 39;],,我[& # 39;picname& # 39;],,我[& # 39;page_url& # 39;],,我[& # 39;img_url& # 39;)))   db.commit才能()   打印才能(我[0],+,“,is  success")   ,除了:   db.rollback才能()   ,db.close(), #,关闭数据库

<强> 5。创建网络工程

运行我们的爬虫,很快数据库表里就有数据了。

 Python利用Django写restful api接口的示例

然后开始写接口。我是通过Django + rest_framework来写的。

Django是用Python开发的一个免费开源的网络框架,可以用于快速搭建高性能,优雅的网站.Django中提供了开发网站经常用到的模块,常见的代码都为你写好了,减少重复的代码。

<强> Django目录结构

urls . py

网址入口,关联到对应的views.py中的一个函数(或者通用类),访问网址就对应一个函数。

views.py

处理用户发出的请求,从url。py中对应过来,通过渲染模板中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。

模型。py

与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候你可以不使用。

形式。py

表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。

Python利用Django写restful api接口的示例