明天在应用vue框架开发零碎的时候,须要用到后端接口,然而接口还没有开发。便想应用最简略的形式构建一个极简的API服务,因为自己偏爱Django框架,便想能不能用Django框架简略的构建想Flask那样的单文件web服务。果然,被我找到了,摘录分享给大家。
# app.py import osimport sysfrom dataclasses import dataclassfrom django.conf import settingsfrom django.core.wsgi import get_wsgi_applicationfrom django.http import HttpResponseRedirect, JsonResponsefrom django.urls import pathfrom django.utils.crypto import get_random_string# django 的配置文件,相当于 settings.py 配置文件,可间接在这里增加和删除# 下边曾经是最简的Django 启动须要的参数了settings.configure( DEBUG=(os.environ.get("DEBUG", "") == "1"), ALLOWED_HOSTS=["*"], # Disable host header validation ROOT_URLCONF=__name__, # Make this module the urlconf SECRET_KEY=get_random_string( 50 ), # We aren't using any security features but Django requires this setting MIDDLEWARE=["django.middleware.common.CommonMiddleware"],)# 应用dataclass 装璜器模仿了 model。@dataclassclass Character: name: str age: int def as_dict(self, id_): return { "id": id_, "name": self.name, "age": self.age, }# 列举数据,齐全能够间接应用字段来结构须要返回的数据characters = { 1: Character("Rick Sanchez", 70), 2: Character("Morty Smith", 14),}# Django View 局部,为不便简略间接应用 function base view def index(request): return HttpResponseRedirect("/characters/")def characters_list(request): return JsonResponse( {"data": [character.as_dict(id_) for id_, character in characters.items()]} )def characters_detail(request, character_id): try: character = characters[character_id] except KeyError: return JsonResponse( status=404, data={"error": f"Character with id {character_id!r} does not exist."}, ) return JsonResponse({"data": character.as_dict(character_id)})# Django route 局部,同 url.py urlpatterns = [ path("", index), path("characters/", characters_list), path("characters/<int:character_id>/", characters_detail),]# 构建 uwsgi 应用 application 可应用 uwsgi 等 WSGI 协定的软件启动。 app = get_wsgi_application()if __name__ == "__main__": # 引入命令行启动形式函数,不便间接启动测试, 同 manage.py 文件 from django.core.management import execute_from_command_line execute_from_command_line(sys.argv)
间接运行如下命令即可启动服务:
python app.py runserver
还能够应用 uwsgi 等应用程序启动。如应用 gunicorn 如下:
gunicorn app:app
心愿能够帮忙到你~
更多的Django 单文件的测试及构建办法能够到Adam Johnson(Django 技术委员会成员,英国Django MeetUp的组织者)的博客查阅。