美文网首页
轻巧的Django,单文件实现。

轻巧的Django,单文件实现。

作者: 红煌流星 | 来源:发表于2018-12-28 16:11 被阅读0次

了解过flask的同学知道,flask实现一个网站很简单,只需要做几件事:实例化Flask,定义路由,定义网址内容,就像下面一样:

from flask import Flask 

app = Flask(__name__)  # 实例化

@app.route("/") #定义路由
def index():
    return "Hello world!"

只要flask run,就可以跑起来Hello, world了。
而我们使用Django的时候,要新建一个项目,就要 django-admin startproject project,这样起码会有四个文件,那么有没有简单的Django实现,像flask一样简短呢,答案是可以的。
实现最简短的Django,我们做这几件事:定义路由,定义视图函数,接受命令行参数。

  • 路由实现
    Django寻找路由的时候,需要从urlpatterns那里寻找,所以我们定义了一个urlpatterns,除此之外,我们还需要告诉根路由在哪,所以要导入设置settings,告诉它URL_CONF就在这个文件里面
settings.config(
    ROOT_URLCONF = name,
    )
urlpatterns = [
    path("', index)
    ]
  • 视图函数
    当我们对一个页面发起请求的时候,Django会创造一个HttpRequest对象,把HttpRequest对象作为第一个参数传递个视图函数,所以Django里的视图函数一定会有一个request对象,之后视图函数会返回一个HttpResponse对象,所以我们还需要用到一个返回HttpResponse的函数HttpResponse()
def index(request):
    return HttpResponse("Hello, world.")
  • 接受命令行参数
    一般在项目里启动时,我们要用到python manage.py runserver,现在我们的Django是一个单项目,所以我们需要一个函数来接受命令行参数来启动Django
execute_from_command(sys.args)

下面就是具体的代码,为了支持调试模式,我们加入了DEBUG=True来开启调试模式。之后,只要命令行输入python hello.py runserver就可以跑起来了。可以看到,Django的实现也可以轻量化。
hello.py

from django.conf import settings
from django.path import HttpResponse
from django.urls import path
from django.core.management import execute_from_command_line

settings.config(
        DEBUG=True,
        ROOT_URLCONF=__name__,
        )

def index(requets):
    return HttpResponse("Hello, world!")

urlpatterns = [
    path("", index),
    ]

if __name__ == "__main__":
    execute_from_command_line(sys.argv)

相关文章

网友评论

      本文标题:轻巧的Django,单文件实现。

      本文链接:https://www.haomeiwen.com/subject/ajxelqtx.html