2017-07-04 3 views
-4

Ich versuche, mit einer Klasse aus Django Ansichten zu arbeiten.Python/Django - Kein Modul namens

sync.py

import requests 

class Sync: 

    def do(): 
     r = requests.post('http://192.168.1.7/api/report_x') 
     print(r.response) 

views.py

import sync 

def index(request): 
    s = Sync() 
    s.do() 
    return HttpResponse("Hello, this is index") 

Wenn ich Index aus dem Browser zugreifen erhalte ich:

globalen Namen 'Sync' ist nicht definiert

Was mache ich falsch?

+1

Ändern Sie die erste Zeile zu 'von Sync-Import Sync ' – TheDarkKnight

Antwort

5

Der direkte Verweis auf Sync() funktioniert nicht mit der aktuellen Importanweisung.

ändert es entweder:

from sync import Sync 

oder benutzen:

s = sync.Sync() 
1

Import die Namen, bevor es

from sync import Sync 
0

Unter der Annahme, dass Ihr Dateiverzeichnis ist richtig und nicht den Grund mit Ändern Sie für den Fehler den folgenden Code:

from sync import Sync # simply import sync just calls the synv.py file, not the Sync class 

def index(request): 
    s = Sync() 
    s.do() 
    return HttpResponse("Hello, this is index") 
5

Wenn Sie Python schreiben, sollten Sie eigentlich Python schreiben. Python ist nicht Java.

Sie sollten hier überhaupt keine Klasse verwenden. Definieren Sie eine eigenständige Funktion namens sync, importieren Sie sie mit from sync import sync und rufen Sie sie einfach auf. Keine Notwendigkeit für eine Instanz von etwas, das keinen Zustand hat.

+0

winzige bearbeiten (aber da der Autor einfach einfügen):' von Sync-Import Sync (Großschreibung) – TheDarkKnight

+2

Nein. Ich schlage vor, OP verwendet keine Klasse überhaupt. Style für Funktionen ist 'lower_case_with_undscores'. –