You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django应用中非Django框架的.py文件存放最佳实践咨询

Django应用代码组织最佳实践(针对爬取/自定义函数)
  • 在Django应用内创建专用子目录存放非框架核心代码,这是最常用的合规方案,完全适配Python包的组织规则。比如给爬取逻辑建scrapers目录,给通用自定义函数建utils目录,也可以按业务逻辑合并成services目录。只要在每个子目录里放一个空的__init__.py文件,Python就会把它识别为可导入的包。
    示例目录结构:

    your_app/
    ├── __init__.py
    ├── views.py
    ├── models.py
    ├── scrapers/
    │   ├── __init__.py
    │   ├── product_scraper.py
    │   └── news_scraper.py
    └── utils/
        ├── __init__.py
        └── data_processor.py
    

    之后在views.py里就能直接导入:from your_app.scrapers.product_scraper import crawl_product_data

  • 按业务功能而非文件类型划分模块(进阶优化)
    如果你的爬取和自定义函数是为了完成同一类业务(比如处理电商数据),可以把相关逻辑放在同一个子模块下,比如ecommerce_data/,里面再分scraper.py和processor.py,这样更便于维护,不会出现跨目录调用的混乱。

  • 用服务层封装复杂逻辑
    如果爬取+数据处理的流程比较长,可以在应用内建services目录,把整个流程封装成一个或多个服务函数/类。视图只需要调用服务层的接口,不用关心内部的爬取和处理细节,进一步降低视图的复杂度。比如:

    # your_app/services/data_service.py
    from ..scrapers.product_scraper import crawl_data
    from ..utils.data_processor import clean_data
    
    def get_cleaned_product_data():
        raw_data = crawl_data()
        return clean_data(raw_data)
    

    视图里只需要from your_app.services.data_service import get_cleaned_product_data,一行代码就能完成调用。

  • 始终保持单一职责
    每个文件只负责一件事:比如一个爬取文件只处理一个网站的爬取逻辑,一个工具文件只封装一类通用函数,避免把不相关的代码混在一起。

内容的提问来源于stack exchange,提问作者s_m_lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:35:18