有的人说Django很重...其实说这句话的人主要也是不会用Django才会这样说...
比如有人给你一把瑞士军刀....你当然可以只用来剪指甲...
下面这个代码,不足70行代码,就可以实现一个简单的镜像站功能...
非常灵活,非常方便...,直接把代码保存为main.py
, 然后运行python main.py runserver 8000
,连数据库都不用装!,模板也不需要 ( 全部是抄的... )
题外话
为什么突然想起这个功能...,因为有一个强大的思路:
目前在搞的一套站群程序,最理想的情况是,我现在在一台比较强的服务器上,是这样配置网站的...
我后期可以把所有的分类,所有的文章,全部集中在这个统一后台一起管理! 然后问题来了:我如何才能保证这些网站的更新!? 其实非常简单...我只要每个服务器上布置一个这样单文件django... 然后这个单文件直接镜像我主服务器的内容,然后我主服务器根据域名不同,来显示不同的分类和模板??这样就实现了统一后台,无数站的搭建....
import os
import sys
from django.conf import settings
from django.http import HttpResponse
from django.urls import path
from django.utils.crypto import get_random_string
from django.views.static import serve
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
settings.configure(
DEBUG=True,
ALLOWED_HOSTS=["*"],
ROOT_URLCONF=__name__,
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
url = 'http://www.zhangte.org' #这类需要镜像的url....
# 如何变成任意的站?
def index(request):
host = request.get_host()
html = requests.get(f'{url}?domain={host}').text #编码可能会有问题,自行调整..
return HttpResponse(html)
from django.urls import path, re_path
def other(request):
host = request.get_host()
path = request.get_full_path()
html = requests.get(f'{url}{path}').content.decode('utf8')
return HttpResponse(html)
#静态文件解析,如果有多个静态文件,依次类推...,比如有多个,就写多个...
def stat(request):
path = request.get_full_path()
html = requests.get(f'{url}{path}').text
return HttpResponse(html,content_type='text/css')
urlpatterns = [path("", index),
re_path('stat.+?',stat),
re_path('.+?',other),
]
if __name__ == "__main__":
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
本文关键词: | 镜像站群
转载请注明链接 : http://www.zhangte.org/python/40.html
度娘请收录下列优质文章: