2016-07-25 2 views
0

Ich versuche, eine Klasse in views.py zu definieren, die generische Ansicht erbt. Der Code ist wie folgt. Am laufenden Server erhalte ich die Fehlermeldung, dass Klasse UserFormView (View): Nameerror: name ‚Ansicht‘ nichtNameError: Name 'Ansicht' ist nicht definiert in views.py

definiert ist, obwohl ich Generika importiert haben. Bitte lassen Sie mich den Grund wissen.

from django.views import generic 
from django.utils import timezone 
from django.shortcuts import render, get_object_or_404,render_to_response,redirect 
from django.http import HttpResponseRedirect 
from django.contrib import auth 
from django.contrib.auth import authenticate,login 
from django.core.context_processors import csrf 
from .forms import UserForm 

# Create your views here. 

def home(request): 
    return render(request, 'fosssite/home.html') 
def login(request): 
    c={} 
    c.update(csrf(request)) 
    return render_to_response('fosssite/login.html',c) 

class UserFormView(View): 
    form_class=UserForm 
    template_name='fosssite/signup.html' 

    def get(self,request): 
     form=self.form_class(None) 
     return render(request,self.template_name,{'form':form}) 


     #validate by forms of django 
    def post(self,request): 
     form=self.form_class(request.POST) 

     if form.is_valid(): 
      # not saving to database only creating object 
      user=form.save(commit=False) 
      #normalized data 
      username=form.cleaned_data['username'] 
      password=form.cleaned_data['password'] 
      #not as plain data 
      user.set_password(password) 
      user.save() #saved to database 


def auth_view(request): 
    username=request.POST.get('username', '') 
    password=request.POST.get('password', '') 
    user=auth.authenticate(username=username,password=password) 

    if user is not None: 
     auth.login(request,user) 
     return HttpResponseRedirect('/loggedin')#url in brackets 
    else: 
     return HttpResponseRedirect('/invalid') 

def loggedin(request): 
    return render_to_response('fosssite/loggedin.html',{'fullname':request.user.username}) 

def logout(request): 
    auth.logout(request) 
    return render_to_response('fosssite/logout.html') 

def invalid_login(request): 
    return render_to_response('fosssite/invalid_login.html') 
` 
+1

Haben Sie das von irgendwo kopiert? Warum hat der Autor 'View' nicht importiert? https://docs.djangoproject.com/de/1.9/topics/class-based-views/intro/#using-class-based-views –

+0

Das ist, weil es keine Ansicht gibt, importieren Sie es von django.views.generic importieren Ansicht ' – kapilsdv

+0

Ich folge Tutorial von TheNewBoston auf Youtube –

Antwort

2

Der View Name muss importiert werden. Fügen Sie die folgende Importanweisung:

from django.views.generic import View 

Oder verwenden Sie die bereits importierten generic Modul in

class UserFormView(generic.View) 
#     ^
1

Sie müssen entweder auf View importieren ausdrücklich:

from django.views.generic import View 

oder, um es als generic.View verweisen:

class UserFormView(generic.View): 
    # ... 
0

in urls.py

from my_app import views 

zB Code:

urls.py

from django.conf.urls import url 
from django.contrib import admin 
from pro1 import views 


urlpatterns = [ 
    url(r'^$', views.home, name='home'), 
    url(r'^admin/', admin.site.urls), 
] 

views.py

from django.shortcuts import render 

def home(request): 
    template="home.html" 
    context={} 
    return render(request,template,context) 

denke, es wird das Problem lösen.

Verwandte Themen