66行的单文件django SEO镜像站群代码以及实现思路


有的人说Django很重...其实说这句话的人主要也是不会用Django才会这样说... 比如有人给你一把瑞士军刀....你当然可以只用来剪指甲... 下面这个代码,不足70行代码,就可以实现一个简单的镜像站功能... 非常灵活,非常方便...,直接把代码保存为main.py , 然后运行python main.py runserver 8000 ,连数据库都不用装!,模板也不需要 ( 全部是抄的... )

题外话

为什么突然想起这个功能...,因为有一个强大的思路: 目前在搞的一套站群程序,最理想的情况是,我现在在一台比较强的服务器上,是这样配置网站的... -w1183

我后期可以把所有的分类,所有的文章,全部集中在这个统一后台一起管理! 然后问题来了:我如何才能保证这些网站的更新!? 其实非常简单...我只要每个服务器上布置一个这样单文件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
度娘请收录下列优质文章:
  • 反思,以及重新规划时间的安排