,:。 2023-01-15 22:51 采纳率: 50%
浏览 27
已结题

flask,django,前后端交互问题

一般我们用flask或django都是开发网站,我就想用flask或django搞一个实时镜像网站。
后来我发现,flask严重依赖网址,导致跳转时就会失去控制
 #main.py
 from flask import Flask,render_template,request,redirect
 import ree
 url = input()
 ree.get(url)
 app = Flask(__name__)

 @app.route('/')
 def index():
    global url
    while True:
        if(url+request.full_path!=url and request.full_path!="/?"):
            url = request.full_path
            get(url)
            return render_template('index.html')
        else:
            return render_template('index.html')
  app.run(host='0.0.0.0', port=5000, debug = True)
#ree.py
import requests

import time
import os
def get(url):
    head = {
        "User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11"
    }
    res = requests.get(url, headers=head)
    with open("templates/index.html", "w", encoding="UTF-8") as file:#将爬到的html保存,供flask使用
        file.write(res.text)
见上述代码,我想用循环的方式检测网址变动,重新爬取。但是失败了,循环没有成功,导致丢失网站。

img

这里提两个问题,1.我发现在flask在运行过程中有输出变动后网页,只是代码无法捕捉,是否有一些方法可以捕捉?
2.网上说django更强大,是否可以用django实现?
  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-01-16 09:28
    关注

    Flask 的路由机制是基于请求的,当一个请求到达 Flask 时,它会匹配该请求的 URL 和已注册的路由,如果匹配成功,就会调用对应的函数进行处理。在您的代码中,您在 index() 函数中使用了一个无限循环,这会导致该函数无法继续处理其他请求,从而导致网页无法正常访问。
    解决方案:

    使用 JavaScript 来实现网页的实时镜像。您可以在页面上使用 JavaScript 定时发送请求来获取最新的页面内容,并进行更新。
    使用 WebSockets 来实现实时通信。您可以使用 WebSockets 在服务器端和客户端之间建立一个双向的连接,这样就可以在服务器端检测到网页的变动,并将变动通知到客户端进行更新。
    Django 是一个强大的 Web 框架,它可以帮助您快速构建高质量的 Web 应用程序。Django 提供了一系列功能,如路由系统、模板系统、数据库支持等,使得开发 Web 应用变得更加容易。
    可以用 Django 实现实时镜像网站,但是实现方式和 Flask 不同。可以使用 Django 提供的 Channels 框架来实现 WebSocket 通信,这样就可以在服务器端检测到网页的变动,并将变动通知到客户端进行更新。

    此外,Django 也有一个类似于 Flask 的框架 Django-REST-framework,可以用来做API的开发,与前端进行交互。
    可以借助它来实现实时镜像网站。

    Flask和Django都可以实现实时镜像网站,两者实现方式不同,Flask可以使用 JavaScript 和 WebSockets 两种方式,Django可以使用 Channels 和 Django-REST-framework 两种方式。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月24日
  • 已采纳回答 1月16日
  • 创建了问题 1月15日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵