2016-08-13 7 views
5

In einem Projekt, an dem ich gerade arbeite, teile ich viele größere Dateien in kleinere Teile, damit sie einfacher zu bearbeiten sind. Ein konkretes Beispiel ist die Schaffung Klasse basierte Ansichten von Funktion basierte Ansichten in Django:Standard-Export in Python 3

# 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()) 
] 

Oben, ich habe LoginView zweimal zu verwenden, wenn ich es nennen wollen, da LoginView importieren das Modul importiert, und die Methode nicht von der Modul, obwohl sie den gleichen Namen haben. Im Idealfall möchte ich vermeiden, jedes Mal LoginView.LoginView anrufen zu müssen.

In Javascript, kann ich nur sagen, export default function my_function() { ... } ohne es zu benennen, und wenn es Standard ist es importiert wird, z import my_function from './some_module.js';

Gibt es eine Möglichkeit 3 ​​so etwas wie dies in Python zu tun? Ich möchte nicht from app.views.LoginView import LoginView tun, weil es besonders in einem großen Django-Projekt und in einer Datei wie urls.py nicht möglich ist, jeden Import in einer separaten Zeile zu haben.

Antwort

4

Sie können LoginView als Name unter app.views unter Verwendung der __init__.py von app.views importieren.

In app/views/__init__.py:

from LoginView import LoginView 

In urls.py

import app.views 

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