搭建一个单文件的Django应用


很多人感觉Django很庞大,是一个严格遵守MTV开发流程的框架..每次搭建一个Django的时候,都需要好多文件,布置起来非常复杂... 但是其实Django只是把功能提供给你而已,你要不要用,完全取决于需求... 比如我就有这样一个需求:

如何搭建一个非常简单的服务,访问首页的时候,直接返回该服务器所在的ip地址?

这个功能作用是什么,比如我家里有一台服务器,公网ip经常变,我需要对其进行一个自动的白名单维护..,那么就需要知道这个ip是否有改变.. 当然你也可以在该服务器上写上这样一个任务,来统一监控白名单,但是这不符合我的强迫症需求..,我需要的是,把所有的管理分配调控等等的一列的东西,完全的独立出来... 下面看代码 :

import os,sys
from django.conf import settings
from django.http import HttpResponse
from django.urls import path
from django.utils.crypto import get_random_string
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
settings.configure(
    INSTALLED_APPS=['django.contrib.staticfiles', ],
    DEBUG=False,
    STATIC_URL='/static/',
    STATICFILES_DIRS=(
        os.path.join(BASE_DIR, "static"),
    ),
    # Disable host header validation
    ALLOWED_HOSTS=["*"],
    # Make this module the urlconf
    ROOT_URLCONF=__name__,
    # We aren't using any security features but Django requires this setting
    SECRET_KEY=get_random_string(50),
    TEMPLATES=[
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.request',
                ],
            },
        },
    ]
)

import requests
def index(request):
    return HttpResponse(requests.get('https://myip.ipip.net/'))

urlpatterns = [path("", index)]


if __name__ == "__main__":
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)

然后把这个文件发到任意需要查看ip地址的地址的服务器上... 运行

nohup python test_django.py runserver 0.0.0.0:8000 &

然后你就可以查看到当前服务器所在的ip地址了,就算他ip改变了,你也可以获取到最新的ip地址...,如何停止这个服务?

os.system("ps auxww | grep 'test_django' | awk '{print $2}' | xargs kill -9")

这样,Django用起来的感觉是不是和Falsk很像?


本文关键词: | Django搭建 | Django应用 | 应用搭建
转载请注明链接 : http://www.zhangte.org/python/22.html
度娘请收录下列优质文章:
  • 反思,以及重新规划时间的安排