2016-07-05 94 views
0

我正在学习一些关于Django 1.9的东西,我想创建一个登录表单,但使用基于类的视图。无法导入LoginView?

这是MI视图代码:

from django.shortcuts import render 

from django.contrib.auth.views import LoginView 

class AlumnoLoginView(LoginView): 
    template_name = "alumno/login.html" 
    redirect_authenticated_user = True 

这是我的网址代码:

from django.conf.urls import url, include 

from .views import AlumnoLoginView 

app_name = 'alumno' 
urlpatterns = [ 
    url(r'^login/$', AlumnoLoginView.as_view(), name="login"), 
] 

这使得一个错误:

ImportError: cannot import name LoginView 

但如果我删除里面的代码没有任何反应。

这是完全错误跟踪(弗朗索瓦变化):

Unhandled exception in thread started by <function wrapper at 0x7f044ad8ac08> 
Traceback (most recent call last): 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper 
    fn(*args, **kwargs) 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/core/management/commands/runserver.py", line 116, in inner_run 
    self.check(display_num_errors=True) 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/core/management/base.py", line 426, in check 
    include_deployment_checks=include_deployment_checks, 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/core/checks/registry.py", line 75, in run_checks 
    new_errors = check(app_configs=app_configs) 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/core/checks/urls.py", line 13, in check_url_config 
    return check_resolver(resolver) 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/core/checks/urls.py", line 23, in check_resolver 
    for pattern in resolver.url_patterns: 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/utils/functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 417, in url_patterns 
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/utils/functional.py", line 33, in __get__ 
    res = instance.__dict__[self.name] = self.func(instance) 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 410, in urlconf_module 
    return import_module(self.urlconf_name) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/home/plafhz/Envs/StudentAdmin/studentadmin/studentadmin/urls.py", line 21, in <module> 
    url(r'^alumno/', include('alumno.urls')), 
    File "/home/plafhz/Envs/StudentAdmin/local/lib/python2.7/site-packages/django/conf/urls/__init__.py", line 52, in include 
    urlconf_module = import_module(urlconf_module) 
    File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module 
    __import__(name) 
    File "/home/plafhz/Envs/StudentAdmin/studentadmin/alumno/urls.py", line 3, in <module> 
    from alumno.views import AlumnoLoginView 
    File "/home/plafhz/Envs/StudentAdmin/studentadmin/alumno/views.py", line 3, in <module> 
    from django.contrib.auth.views import LoginView as BaseLoginView 
ImportError: cannot import name LoginView 

有什么不对? 我如何修复它? 谢谢:)

+0

你使用/进口原装LoginView在你的网址或其他地方?尝试'从django.contrib.auth.views导入LoginView作为BaseLoginView' –

+0

此外,你可以粘贴完整的错误跟踪? –

+0

我读了类似的[链接](http://stackoverflow.com/questions/5238658/django-cannot-import-name)关于循环导入,但我不明白如何解决它@弗朗索瓦 – plafhz

回答

1

在django.contrib.auth.views中没有视图叫做LoginView 我认为你需要。

从django.contrib.auth.views导入登录

+0

LoginView仅在2015年8月的Django的'dev'发行版中 - 它在1.9或1.10.0中不可用。 – Gregarious

1

基于类的视图LoginView和LogoutView被引入上的Django 1.11和基于函数的视图的登录“和“登出”是deprecated从那时起。

您可以使用基于类的意见LoginView和LogoutView这样的:

from django.contrib.auth.views import LoginView, LogoutView 


urlpatterns = [ 
    url(r'^login/$', LoginView.as_view(template_name='...'), name="login"), 

] 
0

LoginView只能从Django的1.11