[英]NameError: name 'View' is not defined in views.py
I am trying to define a class in views.py which is inheriting generic view. 我试图在views.py中定义一个继承通用视图的类。 The code is as follows.
代码如下。 On running server I get the error that class UserFormView(View): NameError: name 'View' is not defined
在运行的服务器上,我收到以下错误:类UserFormView(View):NameError:名称'View'未定义
although I have imported generic. 虽然我已经导入了仿制药。 Please let me know the reason.
请让我知道原因。
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')
`
The View
name needs to be imported . View
名称需要导入 。 Add the following import statement: 添加以下导入语句:
from django.views.generic import View
Or use the already imported generic
module in 或者使用已经导入的
generic
模块
class UserFormView(generic.View)
# ^
You need to either import View
explicitly: 您需要显式导入
View
:
from django.views.generic import View
or refer to it as generic.View
: 或将其称为
generic.View
:
class UserFormView(generic.View):
# ...
in urls.py 在urls.py中
from my_app import views
eg code: 例如代码:
urls.py 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 views.py
from django.shortcuts import render
def home(request):
template="home.html"
context={}
return render(request,template,context)
guess it will solve the problem. 猜猜它会解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.