2016-07-05 254 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