在我正在进行的项目中,我将许多较大的文件分成较小的部分,以便于使用。一个特定的示例是从Django中基于函数的 View 创建基于类的 View :

# app/views/LoginView.py
class LoginView(View):
  ...

# urls.py
from app.views import LoginView
urlpatterns = [
  # Here, I have to use LoginView twice
  url(r'^login', LoginView.LoginView.as_view())
]

上面,我想调用它时必须两次使用LoginView,因为导入LoginView会导入模块,而不是模块中的方法,即使它们是相同的名称也是如此。理想情况下,我希望避免每次都调用LoginView.LoginView

在Javascript中,我只能说export default function my_function() { ... }而无需命名,并且在导入时是默认值,例如import my_function from './some_module.js';
有什么办法可以在Python 3中做类似的事情?我不想做from app.views.LoginView import LoginView,因为,尤其是在一个大型Django项目中以及像urls.py这样的文件中,将每个导入放在单独的行上是不可行的。

最佳答案

您可以使用LoginViewapp.views__init__.py作为名称导入app.views下。

app/views/__init__.py中:

from LoginView import LoginView

urls.py
import app.views

urlpatterns = [
    url(r'^login', app.views.LoginView.as_view())
]

关于python - Python 3中的默认导出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38927979/

10-12 18:31