Python 3中的默认导出

jos*_*osh 7 python django python-3.5

在我正在进行的项目中,我将大量较大的文件分成小块,以便更容易使用.一个具体的例子是在Django中基于函数的视图创建基于类的视图:

# 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())
]
Run Code Online (Sandbox Code Playgroud)

在上面,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,将每个导入都放在一个单独的行上是不可行的.

Ore*_*ail 9

您可以使用of LoginView作为名称导入.app.views__init__.pyapp.views

app/views/__init__.py:

from LoginView import LoginView
Run Code Online (Sandbox Code Playgroud)

urls.py

import app.views 

urlpatterns = [
    url(r'^login', app.views.LoginView.as_view())
]
Run Code Online (Sandbox Code Playgroud)