NameError: name 'loginView' is not defined

Django, Flask, Bottle, WSGI, CGI…
Antworten
norgsmen
User
Beiträge: 55
Registriert: Samstag 26. Juni 2021, 22:09

Hi, Leute ich versuche gerade eine Calendar App von einem Tutorial nachzubauen, aber komme derzeit nicht weiter. Ich habe im Grunde genommen alles so wie vom Tutorial übernommen, aber komme leider den Fehler: NameError: name 'loginView' is not defined

Vorgehensweise:

1. Wurde mit python -m venv venv ein Virtual Environment erstellt
2. Wurde MyCalendarApp>.\venv\Scripts\activate.bat das Virtual Environment aktiviert
3. Wurde python -m pip install django django installiert
4. Wurde mit django-admin startproject MyCalendarApp der Ordner MyCalendarApp angelegt
5. Mit python manage.py startapp account wurde ein weiterer Ordner namens account angelegt

Im Tutorial wurde nun bei dem Ordner MyCalendarApp bei settings.py unter INSTALLED_APPS 'account' hinzugefügt.

Bei dem Ordner urls.py wurde

Code: Alles auswählen

path('account/', include('account.urls'))
sowie

Code: Alles auswählen

from django.urls import path, include
hinzugefügt.

Nun wurde bei dem account Ordner eine neue Datei names urls.py angelegt und das hier hinzugefügt

Code: Alles auswählen

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('login', loginView, name='login')
]
Im letzten Schritt wurde im Account Ordner unter views.py die Funktion

Code: Alles auswählen

def loginView(request):
    return render(request, 'login.html', {})
hinzugefügt.

Wenn ich bei dem account Ordner unter urls.py den Code

Code: Alles auswählen

from MyCalendarApp.account.views import loginView
hinzufügt dann verschwindet die Fehlmeldung

Code: Alles auswählen

NameError: name 'loginView' is not defined
aber bekomme stattdessen

Code: Alles auswählen

ModuleNotFoundError: No module named 'MyCalendarApp'
als Fehler.

Hier ist das Tutorial: https://www.youtube.com/watch?v=3U-DLNawGUg&t=40s

Als Entwicklungsumgebung nutze ich VS Code

Vielen Dank für die Hilfe
Benutzeravatar
sparrow
User
Beiträge: 4237
Registriert: Freitag 17. April 2009, 10:28

Bitte nicht stückeln, was du gemacht hast. Der Code am Stück kann etwas ganz anderes sein. Du schreibst zum Beispiel "unter" - und das könnte am Ende der Datei heißen.
Wie lautet der vollständige Code der urls.py?

Edit: Ach, ich sehe gerade von wem das Video ist.
Offensichtlich haben die Videos die selbe Qualität wie die Beispiele auf der Seite: Sie sind kacke. Die Namensgebung ist schon einmal fürchterlich falsch.

Ich empfehle das offzizelle Tutorial für den Einstieg.
norgsmen
User
Beiträge: 55
Registriert: Samstag 26. Juni 2021, 22:09

account ordner:

urls.py

Code: Alles auswählen

from django.contrib import admin
from django.urls import path, include

from MyCalendarApp.account.views import loginView

urlpatterns = [
    path('login', loginView, name='login')
]
views.py

Code: Alles auswählen

from django.shortcuts import render

# Create your views here.
def loginView(request):
    return render(request, 'login.html', {})

MyCalendarApp ordner:

urls.py

Code: Alles auswählen

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('account/', include('account.urls'))  
]
Benutzeravatar
sparrow
User
Beiträge: 4237
Registriert: Freitag 17. April 2009, 10:28

Ich würde sagen, das Projekt ist kein übergordnetes Modul.
Innerhalb einer App macht das auch gar keinen Sinn über das Projekt zu gehen. Die App soll ja nur sich selbst kennen.

Daher sollte in der urls.py folgender Import funktionieren.

Code: Alles auswählen

from .views import loginView
Ich revidiere meine Aussage teilweise.
Das Video-Tutorial bleibt murks. Die Namensgebung ist falsch und wenn es damit schon anfängt, wird es nicht besser.
Allerdings verbirgt sich hinte dem Videoproduzenten nicht die Webseite, die ich vermutet habe - die heißt nur ähnlich.

Der Import in dem Video ist übrigens (mehr oder weniger) richtig. Man muss das schon so schreiben, wie es da gezeigt wird.
norgsmen
User
Beiträge: 55
Registriert: Samstag 26. Juni 2021, 22:09

@sparrow danke für die Hilfe! Zwar funktioniert es jetzt, aber kurz danach taucht wieder ein neuer für mich nicht zu lösender Fehler auf. Ist es möglich, den Betrag hier zu löschen?
Sirius3
User
Beiträge: 17825
Registriert: Sonntag 21. Oktober 2012, 17:20

Es ist völlig normal, dass, wenn man etwas neues lernt, viele Fragen hat. Dazu ist ha ein Forum da.
Benutzeravatar
sparrow
User
Beiträge: 4237
Registriert: Freitag 17. April 2009, 10:28

@norgsmen: Was ist denn der andere Fehler? ImDen kriegen wir auch weg.
norgsmen
User
Beiträge: 55
Registriert: Samstag 26. Juni 2021, 22:09

Hat sich erledigt - habe den Fehler gefunden. Danke euch!
Antworten