快速搭建基于python的后端服务-Flask and Django

背景

最近想build个app,不可避免的就需要服务端的支持,而作为一名iOS开发者,除了OC和Swift,最熟悉的就是python了,虽然已经有大佬写了个框架能让Swift编写服务端程序,但是还是比较小众,而且需要额外地配置环境,因此就不作考虑了,于是开始尝试用python写一个服务端程序。

Flask

首先尝试使用了一下Flask,Flask是一款轻量级的Web应用框架,从安装到使用非常便捷,这里贴上中文文档

安装

ruby 复制代码
$ pip install Flask

使用

python 复制代码
from flask import Flask, jsonify, request

app = Flask(__name__)
# 示例路由:GET请求
@app.route('/api/hello', methods=['GET'])
def hello():
    return jsonify({'message': 'Hello, World!'})
    
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=1111)

运行

ruby 复制代码
$ python3 'python文件路径'

这时服务就运行到服务器的1111端口上了。

访问

可以通过浏览器访问服务,服务器地址+端口+'/api/hello', 如:http://192.168.0.123:1111/api/hello,这里要记得放行你所设置的端口

到这里就简单的搭建好了服务。但要为我的app提供完整的服务,还需要用户系统、数据库等等的一些基础模块。对于数据库,Flask的文档有较为完整的教程,但是还需要去写一套数据库操作代码,这很明显是低效的,那有没有一个框架已经为我们做好了上述的工作呢?

Django

Django是一款非常出色的web应用框架,旨在帮助我们用更少的代码更快地去编写更好的web端应用。Django官网Django makes it easier to build better web apps more quickly and with less code. 有如Instagram、Spotify、Disqus也使用了Django

Django自带一套比较完善的用户系统,可以应对大部分关于账号的操作(登录、注册、登出、注销)

且封装了一个Models类,可以很便捷地操作数据库

话不多说,开始搭建

安装

ruby 复制代码
$ pip install Django

这里由于我的服务器系统,后面运行的时候出了点问题,查阅Django的issue才知道,由于我的服务器安装的是CentOS7,自带的sqlite版本是3.7.17,且是无法升级的,而Django从2.2版本开始就已经不支持低于3.8.3的sqlite版本了,很明显路只有两条,要么升级服务器的系统版本,要么安装低版本的Django,果断选择后者

ini 复制代码
$ pip install Django==2.1.15

检查一下是否安装成功

css 复制代码
$ python3 -m django --version

顺利打出版本号

创建应用

javascript 复制代码
$ mkdir ~/DjangoApp //创建应用目录
$ cd ~/DjangoApp //路径到应用目录
$ sudo python3 -m django-admin startproject DjangoTest //创建一个名为'DjangoTest'的应用

// 在Django 2.1.15中,没有django-admin方法,应该用如下代码代替:
// $ sudo python3 -m django startproject DjangoTest

用VSCode的远程资源管理器访问应用目录,便可以看到刚刚我们用Django所创建的应用

这时我们通过VSCode的远程资源管理器更改里面的代码的话可能会遇到权限问题,处理一下

bash 复制代码
sudo chown -R username path

使用

打开路由文件~/DjangoTest/urls.py,输入如下示例代码:

python 复制代码
from django.contrib import admin
from django.urls import path
from django.http import JsonResponse

def hello(request):
    return JsonResponse({'message': 'Hello, World!'})

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/hello', hello),
]

打开设置文件~/DjangoTest/settings.py,配置一下服务器地址

python 复制代码
ALLOWED_HOSTS = ['192.168.0.123']

运行

ruby 复制代码
$ sudo python3 manage.py runserver 0.0.0.0:1111

运行成功,而且还发现Django帮我们配置好了splite数据库

访问

同样的,可以通过浏览器访问服务,服务器地址+端口+'/api/hello', 如:http://192.168.0.123:1111/api/hello,这里要记得放行你所设置的端口

自此Django就已经在服务器上搭建好了!

相关推荐
啊森要自信10 分钟前
【GUI自动化测试】Python 自动化测试框架 pytest 全面指南:基础语法、核心特性(参数化 / Fixture)及项目实操
开发语言·python·ui·单元测试·pytest
赵谨言21 分钟前
基于python智能家居环境质量分析系统的设计与实现
开发语言·经验分享·python·智能家居
程序员三藏1 小时前
银行测试:第三方支付平台业务流,功能/性能/安全测试方法
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·安全性测试
程序员晚枫1 小时前
Python版本进化史:从3.6到3.14,每个版本都带来了什么惊喜?
python
程序猿小D1 小时前
【完整源码+数据集+部署教程】 【零售和消费品&存货】【无人零售】自动售卖机饮料检测系统源码&数据集全套:改进yolo11-KernelWarehouse
python·yolo·计算机视觉·目标跟踪·数据集·yolo11·自动售卖机饮料检测系统
寒怜z1 小时前
python 景区游客量统计
python
程序员晚枫1 小时前
Python 3.14发布:多解释器让性能飙升300%,GIL时代即将终结!
python
程序猿小D1 小时前
【完整源码+数据集+部署教程】 【零售和消费品&存货】条形码检测系统源码&数据集全套:改进yolo11-TADDH
python·yolo·计算机视觉·目标跟踪·数据集·yolo11·条形码检测系统
废弃的小码农2 小时前
测试基础--Day01--软件测试基础理论
python·功能测试·测试工具
火白学安全2 小时前
《Python红队攻防脚本零基础编写:入门篇(一)》
python·安全·web安全·网络安全·系统安全