Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在项目外部导入flask类视图

在项目外部导入flask类视图
EN

Stack Overflow用户
提问于 2020-10-19 14:53:48
回答 1查看 38关注 0票数 0

Good Day -类似的Python 3导入问题和问题,我在google和这个网站上看到过,但对这种情况没有答案。如何从应用程序外部导入Flask类视图?

假设我有一个Flask应用,在Python 3.6上,使用Flask-Classy,其结构类似于:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MainFolder   
├── __init__.py
├── app
│   ├── __init__.py
│   ├── views
│   │   ├── __init__.py
│   │   └── myview.py
│   │   └── config.py
│   ├── app.py
└── sideproj
    ├── __init__.py
    ├── calc.py

现在myview.py通过from .config import Config导入配置(Config是config.py中的类名)。Flask包含在myview.py框架中工作的主要类函数,但在类中也有一个执行主要工作的helper函数。这一切都很好,当我运行python app.py时-它能够提供Flask应用程序,我可以通过localhost:5000访问它。

现在我的问题是,我正在做一个计算一些数据的副项目,我想在myview.py中使用核心的主力函数,但在flask应用程序之外。在sideproj/calc.py中,我实际上是想导入myview.py,这样我就可以运行函数(当前位于类中),而不需要复制代码库。

使用一个丑陋的黑客,我尝试的第一件事是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys

sys.path.append('../app/views')

import myview

代码可以导入myview,但因为myview.py导入的是config.py,所以无法正确导入,并给出了错误ImportError: attempted relative import with no known parent package

我找不到一种方法,既可以用config.py导入myview,又可以运行app.py并为网站提供服务。例如,如果我将myview.py中的导入更改为只导入import config,那么calc.py可以运行,但app.py会失败,因为它无法导入Config

有什么好方法可以做到这一点吗?或者是一种重新组织主要工作函数的方法,以便myview.pycalc.py都可以使用它(并且函数引用config中的值)。理想情况下,我不会在两个点上有相同的代码。

EN

回答 1

Stack Overflow用户

发布于 2020-10-19 15:55:33

  1. 您可以将您想要复制到包中的功能设置为,正如@chris在评论:

中所建议的那样

我会创建一个新的包,独立于你的flask应用程序和包含主力功能的副项目。例如,添加包含随pip install一起安装的setup.pyworkhorse_package文件夹。在环境中,您可以在中运行flask应用程序。然后,您可以根据需要在flask应用程序和副项目代码中导入该功能,但只保留workhorse_package中的功能。@chris

  1. 你可以使用Flask 。这是否适用取决于您的应用程序使用情况。

  1. (Hacky方式,不推荐用于严肃的应用程序,但在开发多个原型时很有用,使用一些共享功能)您可以将myview.py移动到MainFolder/helpers/中,并编写一个脚本,在运行这两个项目时将其复制到这两个项目中。

  1. 不要这样做。如果你想保持干燥,你就不需要。这是两个独立的项目,它们需要单独的文件。即使是现在,它们也是不同的--一个使用一些配置,另一个则不使用。这真的有那么大帮助吗?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64429885

复制
相关文章
Flask(10)- 标准类视图
Flask.views.View 是 Flask 的标准视图类,用户定义的视图类需要继承于 Flask.views.View 。使用视图类的步骤如下:
小菠萝测试笔记
2021/07/16
6890
Flask(10)- 标准类视图
Flask视图_
版权声明:Copyright © https://blog.csdn.net/zzw19951261/article/details/80461047
zhengzongwei
2019/07/30
5050
Flask路由&视图
在浏览器访问127.0.0.1:5000/func1和 127.0.0.1:5000/func2,返回的结果都是func。
py3study
2020/01/16
7170
Flask | Flask基础 - URL与视图
从新建的文件,我们已经看到,一个URL要与执行函数进行映射,使用的是@app.route装饰器。@app.route装饰器中,可以指定URL的规则来进行更加详细的映射,比如现在要映射一个文章详情的URL,文章详情的URL是/article/id/,id有可能为1、2、3…,那么可以通过以下方式:
咸鱼学Python
2019/06/03
8340
Flask | Flask基础 - URL与视图
Flask 学习-22.可插拨视图MethodView类
前言 可插拨视图基于使用类来代替函数,其灵感来自于 Django 的通用视图。可插拨视图的主要用途是用可定制的、可插拨的视图来替代部分 实现。 基本原理 假设有一个函数用于从数据库中载入一个对象列表并在模板中渲染: @app.route('/users/') def show_users(page): users = User.query.all() return render_template('users.html', users=users) 上例简单而灵活。但是如果要把这个视图变成一
上海-悠悠
2022/09/02
7650
iOS导入外部字体
一、将字体文件拖入工程中。 这些字体可以是网上下载的,也可以直接使用系统的字体册。 点击Launchpad-->其他-->字体册,找到你需要的字体,选择在Finder中打开,将文件拖入工程。 屏幕
谦谦君子修罗刀
2018/04/28
1.1K0
iOS导入外部字体
Flask之视图函数
如果按照正常的写法直接在视图函数上加装饰器@wrapper,则会报错,这是因为加完装饰器之后,原函数名就改变了。
人生不如戏
2018/08/01
4280
Flask(视图函数 四)
基于类的视图,可插拔视图 从Django学来的 好处: 类可以继承 代码可以复用 可以定义多种行为 from flask import Flask, request from flask.views import View app = Flask(__name__) class UserView(View): methods = ['GET', 'POST'] def get(self): return 'get' def post(self):
zx钟
2020/06/19
5040
Python全栈(七)Flask框架之5.视图高级--类视图和蓝图
在前面,我们定义视图都是通过route装饰器装饰函数来定义的,一般称之为视图函数。除了这种方式,还可以基于类实现。 类视图支持继承,但是类视图不能跟函数视图一样通过装饰器添加路由,需要通过app.add_url_rule(url_rule,view_func)来注册。
cutercorley
2020/07/23
5070
Python 导入外部类文件
通常,定义类的代码和调用类创建对象的代码很少放到同一文件下,这就遇到【一个文件需要调用另一个独立存放的类文件来创建对象】的问题。书上和网上的入门教材对此提及较少,以下举例说明其实现方法:
py3study
2020/01/13
1.3K0
flask教程之模板视图
{{ 和 }} 输出内容 {{title}}转义html {{title|safe}} 输出html
老雷PHP全栈开发
2020/07/02
1.1K0
【iOS 开发】父视图外部子视图点击响应 - hitTest
面试被问过两次了的一个问题,记录一下:假如一个 UIView(我们称作 FatherView),有一个 subview(我们称作 ChildView),这个 ChildView 在 FatherView 的 frame 外部,那么默认情况下,这个 ChildView 被点击的时候,并不会触发 FatherView 的点击响应链(这是合情合理的,FatherView 所在的位置都没被点击,它不遍历 subviews,不作回应是正常的),这时候怎样才能让这个 ChildView 相应点击事件?
KyXu
2019/04/11
1.1K0
【iOS 开发】父视图外部子视图点击响应 - hitTest
pycharm怎么导入外部库_python导入本地库
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175169.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
1.6K0
pycharm怎么导入外部库_python导入本地库
flask 一个页面多个视图(flask 24)
{% extends 'base.html' %} {% from 'macros.html' import form_field %}
用户5760343
2019/08/13
9940
1.Flask URL和视图
浏览器访问:http://127.0.0.1:5000/,也可以更改端口号: app.run(port=5001)
zhang_derek
2019/02/13
4970
1.Flask URL和视图
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )
1 . 视图绑定模块默认为全部布局生成绑定类 ; 视图绑定 ( ViewBinding ) 模块一旦启用 , 应用的全部布局都会默认自动生成一个视图绑定类 , 如果生成了视图绑定模块 , 是否对于已经使用的 findViewById 或者 @BindView @BindViews 代码是否有影响 ;
韩曙亮
2023/03/27
8050
【JetPack】为现有 Android 项目配置视图绑定 ( ViewBinding ) 模块 ( 视图绑定不影响传统布局操作 | 视图绑定类关联 Activity | 视图绑定类本质 )
类视图 vs. 函数视图
基于类的视图(CBV)和基于函数的视图(FBV)到底有什么区别? 有什么优缺点? 本篇将会去探讨。 在阅读本篇之前,请记住一点「基于类的视图不会替代基于函数的视图」.
用户1416054
2018/12/26
2.5K0
Flask框架的蓝图与视图
您好,我是码农飞哥,感谢您阅读本文!接上一篇文章,上篇文章我们介绍了Flask框架与SQLAlchemy框架的整合一分钟快速实现Flask框架与SQLAlchemy框架的整合,这篇文章我们将介绍Flask框架的蓝图和视图。
码农飞哥
2021/08/18
5390
Flask路由和视图函数(二)
Flask支持在URL中添加参数,这些参数可以在视图函数中使用。例如,假设我们有一个URL '/users/<username>',它将请求发送到视图函数'user_profile',该函数将显示有关特定用户的信息。下面是一个使用路由参数的示例:
堕落飞鸟
2023/05/05
5640
Flask路由和视图函数(一)
Flask是一个Python Web应用程序框架,它提供了一个简单的方式来构建Web应用程序,而且非常容易上手。在Flask中,路由是决定哪个URL请求应该由哪个函数处理的方法。这个过程由视图函数完成,它们是用于处理请求并返回响应的函数。
堕落飞鸟
2023/05/05
3230

相似问题

从JSP外部项目导入类

12

项目生成类不包括外部项目导入

20

Swift从Xcode外部的项目导入类

10

无法在flask项目中导入枕头

12

Android Studio:如何从项目外部导入java类?

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文