2016-08-01 6 views
1

I http://django-rest-auth.readthedocs.io/en/latest/installation.html#registration-optional gefolgtInstallation django-rest-Auth 'Nameerror: name 'FacebookLogin' ist nicht definiert'

Als django-rest-Auth Installation doc sagte, ich installiert django-allauth zuerst, aber url(r'^rest-auth/facebook/$', FacebookLogin.as_view(), name='fb_login'), NameError: name 'FacebookLogin' is not defined kommt, und Ich weiß nicht, wie ich das lösen soll.

Blog/views.py url (r '^ rest-Auth/facebook/$', FacebookLogin.as_view() name = 'fb_login'), Nameerror: name 'FacebookLogin' ist nicht definiert

from rest_framework import status 
from rest_framework.decorators import api_view 
from rest_framework.response import Response 
from rest_framework import filters 
from rest_framework import generics 
from django.contrib.auth.decorators import login_required 
from allauth.socialaccount.providers.facebook.views import FacebookOAuth2Adapter 
from rest_auth.registration.views import SocialLoginView 


class FacebookLogin(SocialLoginView): 
    adapter_class = FacebookOAuth2Adapter 

Blog/urls.py

from django.conf.urls import url, patterns 
from blog import views 
from rest_framework.urlpatterns import format_suffix_patterns 


urlpatterns = [ 
    url(r'^blog/$', views.post_list, name='list'), 
    url(r'^blog/create/$', views.post_create, name='create'), 
    url(r'^blog/(?P<pk>[0-9]+)$', views.post_detail, name='detail'), 
    url(r'^rest-auth/facebook/$', FacebookLogin.as_view(), name='fb_login'), 
    ] 

urlpatterns = format_suffix_patterns(urlpatterns) 

settings.py

012.351.
INSTALLED_APPS = [ 
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'django.contrib.gis', 
    'django.contrib.sites', 
    'blog', 
    'rest_framework', 
    'rest_framework.authtoken', 
    'rest_auth', 
    'allauth', 
    'allauth.account', 
    'rest_auth.registration', 
    'allauth.socialaccount', 
    'allauth.socialaccount.providers.facebook', 
    ] 

SITE_ID = 1 

Wenn ich python3 manage.py runserver gebiete,

es gibt mir

python3 manage.py runserver 
Performing system checks... 

    Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x7f65f81601e0> 
    Traceback (most recent call last): 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/utils/autoreload.py", line 226, in wrapper 
     fn(*args, **kwargs) 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/management/commands/runserver.py", line 116, in inner_run 
     self.check(display_num_errors=True) 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/management/base.py", line 426, in check 
     include_deployment_checks=include_deployment_checks, 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/checks/registry.py", line 75, in run_checks 
     new_errors = check(app_configs=app_configs) 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/checks/urls.py", line 13, in check_url_config 
     return check_resolver(resolver) 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/checks/urls.py", line 23, in check_resolver 
     for pattern in resolver.url_patterns: 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/utils/functional.py", line 33, in __get__ 
     res = instance.__dict__[self.name] = self.func(instance) 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/urlresolvers.py", line 417, in url_patterns 
     patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/utils/functional.py", line 33, in __get__ 
     res = instance.__dict__[self.name] = self.func(instance) 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/core/urlresolvers.py", line 410, in urlconf_module 
     return import_module(self.urlconf_name) 
     File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module 
     return _bootstrap._gcd_import(name[level:], package, level) 
     File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
     File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
     File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
     File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
     File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
     File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
     File "/home/keepair/djangogirls/mysite/urls.py", line 21, in <module> 
     url(r'', include('blog.urls')), 
     File "/home/keepair/djangogirls/myvenv/lib/python3.5/site-packages/django/conf/urls/__init__.py", line 52, in include 
     urlconf_module = import_module(urlconf_module) 
     File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module 
     return _bootstrap._gcd_import(name[level:], package, level) 
     File "<frozen importlib._bootstrap>", line 986, in _gcd_import 
     File "<frozen importlib._bootstrap>", line 969, in _find_and_load 
     File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked 
     File "<frozen importlib._bootstrap>", line 673, in _load_unlocked 
     File "<frozen importlib._bootstrap_external>", line 665, in exec_module 
     File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed 
     File "/home/keepair/djangogirls/blog/urls.py", line 14, in <module> 
     url(r'^rest-auth/facebook/$', FacebookLogin.as_view(), name='fb_login'), 
    NameError: name 'FacebookLogin' is not defined 

Warum dieser Fehler aufgetreten ist?

Was ist meine Schuld?

Danke fürs Lesen.

+0

Ersetzen Sie 'FacebookLogin.as_view()' durch 'views.FacebookLogin.as_view()'. Fehler - 'FacebookLogin' ist nicht definiert, da urls.py es nicht hat. Fehler - Sie verwenden 'FacebookLogin', haben es aber nicht in' urls.py' importiert. Aber Sie haben 'views 'importiert, so dass Sie' views.FacebookLogin' verwenden können, oder Sie können 'from blog.views importieren FacebookLogin' – kapilsdv

Antwort

0

Fehler ist selbsterklärend, dass FacebookLogin nicht in urls.py definiert ist.

Fehler - Sie verwenden FacebookLogin, aber haben es nicht in urls.py importiert.

Lösung:

Sie haben blog.views im urls.py importiert, so ersetzen FacebookLogin.as_view() mit views.FacebookLogin.as_view()

from django.conf.urls import url, patterns 
from blog import views 
from rest_framework.urlpatterns import format_suffix_patterns 


urlpatterns = [ 
    url(r'^blog/$', views.post_list, name='list'), 
    url(r'^blog/create/$', views.post_create, name='create'), 
    url(r'^blog/(?P<pk>[0-9]+)$', views.post_detail, name='detail'), 
    url(r'^rest-auth/facebook/$', views.FacebookLogin.as_view(), name='fb_login'), 
    ] 

urlpatterns = format_suffix_patterns(urlpatterns) 

OR

importieren Sie die Klasse selbst from blog.views import FacebookLogin.

+0

Es ist sehr hilfreich. Vielen Dank! – touchingtwist

Verwandte Themen