-------------django

1、需要安装的环境
pip install django
pip install djangorestframework ## restful组件
pip install markdown ## 将文本渲染成html
pip install django-filter ## 查询插件
2、创建项目
## django-admin startproject api
## cd api
## python manage.py startapp app
3、配置settings.py文件
## INSTALLED_APPS
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_api.apps.DjangoApiConfig',
'app', ##引入app
'rest_framework' ## 引restful组件
]
## 配置数据库 mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'api',
'USER': 'root',
'PASSWORD': 'root',
'HOST': '127.0.0.1'
}
}
4、建表models.py /app/models.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals # Create your models here.
from django.db import models
class Type(models.Model):
'''type'''
###设置名称,去除前缀
class Meta:
db_table = "type"
type_name = models.CharField(max_length=50)
pub_date = models.DateField()
def __str__(self):
return '%s' % self.type_name class Autor(models.Model):
'''作者'''
GENDER_CHOICES = (
(u'M', u'Male'),
(u'F', u'Female'),
)
class Meta:
db_table = "autor"
name = models.CharField(max_length=100)
gender = models.CharField(max_length=2, choices=GENDER_CHOICES, default='M')
def __str__(self):
return '%s' % self.name class Book(models.Model):
'''book'''
class Meta:
db_table = "book"
type = models.ForeignKey(Type)
name = models.CharField(max_length=200)
description = models.TextField()
autor = models.ForeignKey(Autor)
src = models.CharField(max_length=200)
pub_date =models.DateField()
def __str__(self):
return '%s' % self.name class Music(models.Model):
'''music'''
class Meta:
db_table = 'music'
type = models.ForeignKey(Type)
name =models.CharField(max_length=200)
src = models.CharField(max_length=200)
pub_date = models.DateField()
def __str__(self):
return '%s' % self.name
建立了四张表type,autor,book,music
5、新建序列化文件serializer.py /app/serializer.py from app.models import Type,Autor,Book,Music
from rest_framework import serializers class TypeSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Type
fields = ('type_name', 'pub_date') class BookSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Book
fields = ('type','name','description','autor','src','pub_date') class MusicSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Music
fields = ('type','name','src','pub_date')
class AutorSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Autor
fields = ('name','gender')
6、修改视图文件views.py /app/views.py
# -*- coding: utf-8 -*-
from __future__ import unicode_literals from django.contrib.auth.models import User, Group
from app.models import Type,Book,Autor,Music
from rest_framework import viewsets
from app.serializers import TypeSerializer,BookSerializer,MusicSerializer,AutorSerializer class TypeViewSet(viewsets.ModelViewSet):
queryset = Type.objects.all()
serializer_class = TypeSerializer class AutorViewSet(viewsets.ModelViewSet):
queryset = Autor.objects.all()
serializer_class = AutorSerializer class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer class MusicViewSet(viewsets.ModelViewSet):
queryset = Music.objects.all()
serializer_class = MusicSerializer
7、生成路由
a、 urls.py /api/urls.py
from django.conf.urls import url,include
from django.contrib import admin
from app import rest_urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include(rest_urls)),
]
b.在app下新建rest_urls.py /app/rest_urls.py
# -*- coding:utf-8 -*-
from django.conf.urls import url, include
from rest_framework import routers
from app import views router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
router.register(r'types', views.TypeViewSet)
router.register(r'autors', views.AutorViewSet)
router.register(r'books', views.BookViewSet)
router.register(r'musics', views.MusicViewSet)
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]\
8、运行python manage.py runserver

以types为例
http://127.0.0.1:8000/api/types/ 显示type表所有数据
post http://127.0.0.1:8000/api/types/ 为type表新增数据
http://127.0.0.1:8000/api/types/1/ 显示type表id=1的数据
put http://127.0.0.1:8000/api/types/1/ 更新type表id=1的字段数据
delete http://127.0.0.1:8000/api/types/1/ 删除type表id=1的数据

-------------flask
1、安装flask和搭建web环境
pip install flask
。。。
以前的博客已经写过了。
2、创建项目 3、创建模型 modles.py
# -*- coding: utf-8 -*-
from app import db ## 类型表
class Type(db.Model):
__tablename__ = 'type'
id = db.Column(db.Integer, primary_key=True)
type_name = db.Column(db.String(50))
pub_date = db.Column(db.Date)
def __repr__(self):
return '<Type %r>' % self.type_name
def get_info(self):
obj = db.session.execute('select * from type').fetchall()
return obj
## autor
class Autor(db.Model):
M = 'm'
F = 'F'
__tablename__ = 'autor'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
gender = db.Column(db.String, default= M)
src = db.Column(db.String(200))
pub_date = db.Column(db.Date)
class Book(db.Model):
__tablename__ = 'book'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(200))
description = db.Column(db.Text)
type_id = db.Column(db.Integer,db.ForeignKey('type.id'))
autor_id = db.Column(db.Integer, db.ForeignKey('autor.id'))
src = db.Column(db.String(200))
pub_date = db.Column(db.Date)
class Music(db.Model):
__tablename__ = 'music'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(200))
type_id = db.Column(db.Integer,db.ForeignKey('type.id'))
src = db.Column(db.String(200))
pub_date = db.Column(db.Date)
4、序列化文件serializers.py
# -*- coding: utf-8 -*-
from marshmallow import Schema, fields ###admin表
class TypeSchema(Schema):
id = fields.Int()
type_name = fields.Str()
pub_date = fields.Str()
5、视图文件 main/views.py
# -*- coding: utf-8 -*-
from flask import jsonify,abort,request,redirect
from .. import db
from ..models import Type
from . import main
from ..serializers import TypeSchema
import datetime
###定义login表单 @main.route('/api/v1.0/types/', methods=['GET','POST'])
def get_types():
if request.method=='GET':
types = Type.query.all()
## -----way 1
# list = []
# dict = {}
# for v in types:
# a = {
# 'id': v.id,
# 'type_name': v.type_name,
# 'pub_date': v.pub_date
# }
# list.append(a)
# dict['types'] = list
# return jsonify(dict) ## way 2
schema = TypeSchema(many = True)
list = schema.dump(types)
return jsonify(list)
else:
if request.values.get('pub_date'):
pub_date = request.values.get('pub_date')
else:
pub_date =datetime.date() if request.values.get('type_name'):
type_name = request.values.get('type_name')
else:
type_name =''
type = Type(type_name = type_name,pub_date = pub_date)
db.session.add(type)
db.session.commit()
redirect('/api/v1.0/types/')
@main.route('/api/v1.0/types/<int:id>', methods=['GET','PUT','DELETE'])
def get_type(id):
if request.method =='GET':
type = Type.query.filter_by(id=id).first()
if type == '':
abort(404)
schema = TypeSchema()
type = schema.dump(type)
return jsonify({'type': type})
elif request.method =='PUT':
try:
id = request.values.get('id')
except:
abort(404)
if request.values.get('type_name'):
type_name = request.values.get('type_name')
else:
pass
if request.values.get('pub_date'):
pub_date = request.values.get('pub_date')
else:
pass
else:
## 删除
pass

----基本是这样,flask-restful这个库还没有使用过,可以尝试下。
----资料来源于网络,flask官方文档。

django,flask接口初试的更多相关文章

  1. Django&Flask区别

    Flask Flask 本身只有一个内核,几乎所有的功能都需要用第三方的扩展来实现. Flask 没有默认使用的数据库,默认依赖两个外部库:Jinja2 模板引擎和 WSGI 工具箱(采用的时 Wer ...

  2. 在 Django/Flask 开发服务器上使用 HTTPS

    使用 Django 或 Flask 这种框架开发 web app 的时候一般都会用内建服务器开发和调试程序,等程序完成后再移交到生产环境部署.问题是这些内建服务器通常都不支持 HTTPS,我们想在开发 ...

  3. nginx + uwsgi + django/flask Nginx + php-fpm + PHP

    后端服务器设置nginx + uwsgi + django/flask需要注意的问题 - ACE开发者 https://acejoy.com/2018/09/09/547/ 后端开发应用中,除了Ngi ...

  4. Django&,Flask&pyrthon原生sql语句 基本操作

    Django框架 ,Flask框架 ORM 以及pyrthon原生sql语句操作数据库 WHAT IS ORM? ORM( Object Relational Mapping) 对象关系映射 , 即通 ...

  5. windows下apache + mod_wsgi + python部署flask接口服务

    windows下apache + mod_wsgi + python部署flask接口服务 用python3安装虚拟环境 为啥要装虚拟环境? 原因1:安装虚拟环境是为了使项目的环境和全局环境隔离开,在 ...

  6. jmeter测试 flask 接口请求

    jmeter测试 flask 接口请求 flask的代码如下: #!/usr/bin/env python # -*- coding: utf-8 -*- from flask import Flas ...

  7. python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...

  8. Django,Flask,Tornado三大框架对比,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架

    Django 与 Tornado 各自的优缺点Django优点: 大和全(重量级框架)自带orm,template,view 需要的功能也可以去找第三方的app注重高效开发全自动化的管理后台(只需要使 ...

  9. tornado django flask 跨域解决办法(cors)

    XMLHttpRequest cannot load http://www.baidu.com. No 'Access-Control-Allow-Origin' header is present ...

随机推荐

  1. 时间标准基础知识UTC和ISO8601

    过去世界各地原本各自订定当地时间,但随着交通和电讯的发达,各地交流日益频繁,不同的地方时间,造成许多困扰,于是在西元1884年的国际会议上制定了全球性的标准时,明定以英国伦敦格林威治这个地方为零度经线 ...

  2. 怎么控制contenteditable的输入

    contenteditable是所有流浪器都支持的属性, 可以利用标签模拟文本域, 实现体验相当不错的内容跟着高度自动增高的体验, 但是也带来一些问题, 就是可以直接复制带有style样式的标签进去 ...

  3. CenterOS下安装NodeJS

    1. 首先下载NodeJS的版本 wget https://nodejs.org/dist/v8.1.3/node-v8.1.3-linux-x64.tar.gz 我这里下载的是v8.1.3 版本 n ...

  4. ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一)

    UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加 ...

  5. ubuntu16 安装matplotlib

    在安装ubuntu安装matplotlib时碰到不少问题,简单做个备忘: 需要先安装其依赖的包libpng和freetype 安装libpng: sudo apt-get install libpng ...

  6. ecstore-ftp设置,不能上传文件

    某些主机居然不能上传,ftp改成127.0.0.1即可 ftp地址改成127.0.0.1即可...

  7. @media 响应式布局

    能根据宽 高 屏幕等一些标签的变化来应用不同的样式叫响应式,如: <!DOCTYPE html> <html lang="en"> <head> ...

  8. awk 文本处理工具

    awk: 强大的文本处理工具,擅长对日志文件进行分析: 不仅用于Linux,也是任何环境中现在的功能最强大的数据处理引擎: 语法说明: awk '{pattern + action}' {filena ...

  9. webGL之three.js入门2

    入门建议: webGL中文翻译教程,基于NeHe的openGL教程:http://www.hiwebgl.com/?p=42 . WebGL中文网 http://www.hewebgl.com/ ,里 ...

  10. php大量数据 10M数据从查询到下载 【内存溢出,查询过慢】解决方案

    功能描述:做数据导出 功能分析:1.采用csv的格式,因为csv的格式比excel小 2. 3W条数据,100个字段需要全部导出 开始 直接查询 //此处使用的laravel框架,具体含义一看就懂 t ...