明天在应用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的组织者)的博客查阅。