2015-05-21 4 views
1

Я застрял с этой досадной проблемой и буду благодарен, если кто-то может предложить что-то, что действительно помогает. Я искал StackOverflow для подобных вопросов и понял, что ни одно из предлагаемых решений не работает для меня. Я начал получать эту ошибку после обновления Python и Django (до того, как обновление все получилось просто отлично). Теперь при попытке открыть страницу входа в систему, я вижу это исключение:Django Allauth Ошибка при рендеринге шаблона: NoReverseMatch at/accounts/login/

NoReverseMatch at /accounts/login/ 
Reverse for 'facebook_login_by_token' with arguments '()' and keyword  arguments '{}' not found. 0 pattern(s) tried: [] 
Request Method: GET 
Request URL: http://localhost:8000/accounts/login/ 
Django Version: 1.8.2 
Exception Type: NoReverseMatch 
Exception Value:  
Reverse for 'facebook_login_by_token' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 
Exception Location: D:\Python_3_4_3\lib\site-packages\django\core\urlresolvers.py in _reverse_with_prefix, line 496 
Python Executable: D:\Python_3_4_3\python.exe 
Python Version: 3.4.3 
Python Path:  
['D:\\Django\\dentstudio', 
'C:\\Windows\\system32\\python34.zip', 
'D:\\Python_3_4_3\\DLLs', 
'D:\\Python_3_4_3\\lib', 
'D:\\Python_3_4_3', 
'D:\\Python_3_4_3\\lib\\site-packages'] 
Server time: Чт, 21 Май 2015 18:23:57 +0200 

Это мои настройки проектов:

INSTALLED_APPS = (
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'home', 
'django.contrib.sites', 
'allauth', 
'allauth.account', 
'allauth.socialaccount', 
'allauth.socialaccount.providers.facebook', 
'appointment', 
'staff', 
'job', 
'news', 
'articles',) 


MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.common.CommonMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware', 
'django.middleware.clickjacking.XFrameOptionsMiddleware',) 

TEMPLATE_PATH = os.path.join(BASE_DIR, 'templates') 

TEMPLATE_DIRS = ( 
TEMPLATE_PATH,) 

TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth", 
"django.core.context_processors.debug", 
"django.core.context_processors.i18n", 
"django.core.context_processors.media", 
"django.core.context_processors.static", 
"django.contrib.messages.context_processors.messages", 
"django.core.context_processors.request",  
"allauth.account.context_processors.account", 
"allauth.socialaccount.context_processors.socialaccount",) 

AUTHENTICATION_BACKENDS = (
# Needed to login by username in Django admin, regardless of `allauth` 
"django.contrib.auth.backends.ModelBackend", 
# `allauth` specific authentication methods, such as login by e-mail 
"allauth.account.auth_backends.AuthenticationBackend") 

SOCIALACCOUNT_QUERY_EMAIL = True 
SOCIALACCOUNT_PROVIDERS = { 
'facebook': { 
    'SCOPE': ['email', 'publish_stream'], 
    'METHOD': 'js_sdk' }} 

SITE_ID=7 

Это шаблон, который вызывает исключение:

In template D:\Django\dentstudio\templates\socialaccount\snippets\login_extra.html, error at line 3 

1 {% load socialaccount %} 
2 
3 {% providers_media_js %} 

Мои urls.py:

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
from home import views 
from django.conf import settings 

urlpatterns = patterns('', 
url(r'^$', views.index, name='index'), 
url(r'^home/', include('home.urls')), 
url(r'^appointment/', include('appointment.urls')), 
url(r'^people/', include('staff.urls')), 
url(r'^admin/', include(admin.site.urls)), 
url(r'^inside/', views.inside, name='inside'), 
url(r'^chat/', views.chat, name='chat'), 
url(r'^accounts/', include('allauth.urls')), 
url(r'^job/', include('job.urls')), 
url(r'^news/', include('news.urls')), 
url(r'^prices/', views.prices, name='prices'), 
url(r'^services/', views.services, name='services'), 
url(r'^contacts/', views.contacts, name='contacts'), 
url(r'^articles/', include('articles.urls')), 

)

if settings.DEBUG: 
    urlpatterns += patterns(
    'django.views.static', 
    (r'^media/(?P<path>.*)', 
    'serve', 
    {'document_root': settings.MEDIA_ROOT}),) 

Мой allauth urls.py:

from django.conf.urls import url, patterns, include 
from home import views 

try: 
import importlib 
except ImportError: 
from django.utils import importlib 

from allauth.socialaccount import providers 

from . import app_settings 

urlpatterns = patterns('', url('^', include('allauth.account.urls')),  url(r'^profile/', views.profile, name='profile'),) 

if app_settings.SOCIALACCOUNT_ENABLED: 
urlpatterns += patterns('', url('^social/', 
           include('allauth.socialaccount.urls'))) 

for provider in providers.registry.get_list(): 
try: 
    prov_mod = importlib.import_module(provider.package + '.urls') 
except ImportError: 
    continue 
prov_urlpatterns = getattr(prov_mod, 'urlpatterns', None) 
if prov_urlpatterns: 
    urlpatterns += prov_urlpatterns 

Я уже задумываюсь об установке другого приложения для авторизации facebook, потому что просто немогут справиться с этим бешенством исключения. Пожалуйста, помогите, спасибо!

+2

Вы можете указать свой urls.py? – OYRM

+0

@OYRM да, конечно, я отредактировал сообщение и добавил свой urls.py –

+0

Спасибо, хорошо выглядит до сих пор, я вижу это: url (r '^ accounts /', include ('allauth.urls')), ... как насчет allauth.urls? – OYRM

ответ

1

У меня была такая же проблема, как и вы. После некоторой интенсивной отладки кажется, что в моей производственной среде я не установил запросы. Этот пакет используется во всех файлах allauth.socialaccount.providers. *, Когда urls.py импортируется (импортируется в views.py).

Я должен упомянуть, что когда я сделал GET и/аккаунты/мои ссылки на facebook не присутствовали.

Итак, у вас есть и объяснение для этого.

https://docs.djangoproject.com/en/dev/ref/urlresolvers/#django.core.urlresolvers.reverse

«В рамках разработки, имена URL карты, к которой модель, функция обратной() должна импортировать все ваши привязок файлов и изучить имя каждого вида. Это включает в себя импортирование каждой функции вида Если возникают какие-либо ошибки при импорте какой-либо из ваших функций просмотра, это приведет к тому, что reverse() вызовет ошибку, даже если эта функция просмотра не является той, которую вы пытаетесь отменить.

Убедитесь, что все виды просмотра ссылка в ваших файлах URLconf существует и может быть импортирована правильно. Не включайте строки, которые ссылаются на представления, которые вы еще не написали, потому что эти представления не будут импортироваться ».

Решение установить пакет запросов: пип установить запросы

Основная идея заключается в вышеприведенном документации объяснения. Если вы получите эту ошибку, вероятно, что при доступе/учетных записях/(в режиме отладки) вы не увидите свои ошибочные ссылки. Поэтому попробуйте отладить urls.py для вашего приложения.

Использование оболочки django довольно эффективно.

Смежные вопросы