,:。 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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。