wagtail / wagtail-localize

Translation plugin for Wagtail CMS
https://wagtail-localize.org/
Other
222 stars 84 forks source link

Error thrown when browsing to root url (ie '/') #393

Open enzedonline opened 3 years ago

enzedonline commented 3 years ago

Whenever browsing to the default url (ie http(s)://domain_name) errors are thrown. Seems to do with no template for django to process. Site behaves ok and goes on to the correct local url afterwards.

Django Version: 3.1.8 Wagtail Version: 2.12.3 Wagtail-localize Version: 0.9.5

Error:

[14/May/2021 21:25:35] DEBUG [django.template:869] Exception while resolving variable 'name' in template 'unknown'.
Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "projdir\.venv\lib\site-packages\django\core\handlers\base.py", line 167, in _get_response
    callback, callback_args, callback_kwargs = self.resolve_request(request)
  File "projdir\.venv\lib\site-packages\django\core\handlers\base.py", line 290, in resolve_request
    resolver_match = resolver.resolve(request.path_info)
  File "projdir\.venv\lib\site-packages\django\urls\resolvers.py", line 576, in resolve
    raise Resolver404({'tried': tried, 'path': new_path})
django.urls.exceptions.Resolver404: {'tried': [[<URLResolver <URLPattern list> (admin:admin) 'django-admin/'>], [<URLResolver <module 'wagtail.admin.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\admin\\urls\\__init__.py'> (None:None) 'admin/'>], [<URLResolver <module 'wagtail.documents.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\documents\\urls.py'> (None:None) 'documents/'>], [<URLPattern '^robots\.txt$' [name='robots']>], [<URLPattern '^sitemap.xml$'>], [<URLPattern 'sentry-debug/'>], [<URLPattern 'lang/<str:language_code>/' [name='set_language_from_url']>], [<URLPattern '^static/(?P<path>.*)$'>], [<URLPattern '^media/(?P<path>.*)$'>], [<URLResolver <URLPattern list> (None:None) 'en/'>]], 'path': ''}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 829, in _resolve_lookup
    current = current[bit]
TypeError: 'URLResolver' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 837, in _resolve_lookup
    current = getattr(current, bit)
AttributeError: 'URLResolver' object has no attribute 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 843, in _resolve_lookup
    current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 848, in _resolve_lookup
    raise VariableDoesNotExist("Failed lookup for key "
django.template.base.VariableDoesNotExist: Failed lookup for key [name] in <URLResolver <URLPattern list> (admin:admin) 'django-admin/'>
[14/May/2021 21:25:35] DEBUG [django.template:869] Exception while resolving variable 'name' in template 'unknown'.
Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "projdir\.venv\lib\site-packages\django\core\handlers\base.py", line 167, in _get_response
    callback, callback_args, callback_kwargs = self.resolve_request(request)
  File "projdir\.venv\lib\site-packages\django\core\handlers\base.py", line 290, in resolve_request
    resolver_match = resolver.resolve(request.path_info)
  File "projdir\.venv\lib\site-packages\django\urls\resolvers.py", line 576, in resolve
    raise Resolver404({'tried': tried, 'path': new_path})
django.urls.exceptions.Resolver404: {'tried': [[<URLResolver <URLPattern list> (admin:admin) 'django-admin/'>], [<URLResolver <module 'wagtail.admin.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\admin\\urls\\__init__.py'> (None:None) 'admin/'>], [<URLResolver <module 'wagtail.documents.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\documents\\urls.py'> (None:None) 'documents/'>], [<URLPattern '^robots\.txt$' [name='robots']>], [<URLPattern '^sitemap.xml$'>], [<URLPattern 'sentry-debug/'>], [<URLPattern 'lang/<str:language_code>/' [name='set_language_from_url']>], [<URLPattern '^static/(?P<path>.*)$'>], [<URLPattern '^media/(?P<path>.*)$'>], [<URLResolver <URLPattern list> (None:None) 'en/'>]], 'path': ''}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 829, in _resolve_lookup
    current = current[bit]
TypeError: 'URLResolver' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 837, in _resolve_lookup
    current = getattr(current, bit)
AttributeError: 'URLResolver' object has no attribute 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 843, in _resolve_lookup
    current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 848, in _resolve_lookup
    raise VariableDoesNotExist("Failed lookup for key "
django.template.base.VariableDoesNotExist: Failed lookup for key [name] in <URLResolver <module 'wagtail.admin.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\admin\\urls\\__init__.py'> (None:None) 'admin/'>
[14/May/2021 21:25:35] DEBUG [django.template:869] Exception while resolving variable 'name' in template 'unknown'.
Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "projdir\.venv\lib\site-packages\django\core\handlers\base.py", line 167, in _get_response
    callback, callback_args, callback_kwargs = self.resolve_request(request)
  File "projdir\.venv\lib\site-packages\django\core\handlers\base.py", line 290, in resolve_request
    resolver_match = resolver.resolve(request.path_info)
  File "projdir\.venv\lib\site-packages\django\urls\resolvers.py", line 576, in resolve
    raise Resolver404({'tried': tried, 'path': new_path})
django.urls.exceptions.Resolver404: {'tried': [[<URLResolver <URLPattern list> (admin:admin) 'django-admin/'>], [<URLResolver <module 'wagtail.admin.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\admin\\urls\\__init__.py'> (None:None) 'admin/'>], [<URLResolver <module 'wagtail.documents.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\documents\\urls.py'> (None:None) 'documents/'>], [<URLPattern '^robots\.txt$' [name='robots']>], [<URLPattern '^sitemap.xml$'>], [<URLPattern 'sentry-debug/'>], [<URLPattern 'lang/<str:language_code>/' [name='set_language_from_url']>], [<URLPattern '^static/(?P<path>.*)$'>], [<URLPattern '^media/(?P<path>.*)$'>], [<URLResolver <URLPattern list> (None:None) 'en/'>]], 'path': ''}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 829, in _resolve_lookup
    current = current[bit]
TypeError: 'URLResolver' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 837, in _resolve_lookup
    current = getattr(current, bit)
AttributeError: 'URLResolver' object has no attribute 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 843, in _resolve_lookup
    current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 848, in _resolve_lookup
    raise VariableDoesNotExist("Failed lookup for key "
django.template.base.VariableDoesNotExist: Failed lookup for key [name] in <URLResolver <module 'wagtail.documents.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\documents\\urls.py'> (None:None) 'documents/'>
[14/May/2021 21:25:35] DEBUG [django.template:869] Exception while resolving variable 'name' in template 'unknown'.
Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "projdir\.venv\lib\site-packages\django\core\handlers\base.py", line 167, in _get_response
    callback, callback_args, callback_kwargs = self.resolve_request(request)
  File "projdir\.venv\lib\site-packages\django\core\handlers\base.py", line 290, in resolve_request
    resolver_match = resolver.resolve(request.path_info)
  File "projdir\.venv\lib\site-packages\django\urls\resolvers.py", line 576, in resolve
    raise Resolver404({'tried': tried, 'path': new_path})
django.urls.exceptions.Resolver404: {'tried': [[<URLResolver <URLPattern list> (admin:admin) 'django-admin/'>], [<URLResolver <module 'wagtail.admin.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\admin\\urls\\__init__.py'> (None:None) 'admin/'>], [<URLResolver <module 'wagtail.documents.urls' from 'projdir\\.venv\\lib\\site-packages\\wagtail\\documents\\urls.py'> (None:None) 'documents/'>], [<URLPattern '^robots\.txt$' [name='robots']>], [<URLPattern '^sitemap.xml$'>], [<URLPattern 'sentry-debug/'>], [<URLPattern 'lang/<str:language_code>/' [name='set_language_from_url']>], [<URLPattern '^static/(?P<path>.*)$'>], [<URLPattern '^media/(?P<path>.*)$'>], [<URLResolver <URLPattern list> (None:None) 'en/'>]], 'path': ''}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 829, in _resolve_lookup
    current = current[bit]
TypeError: 'URLResolver' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 837, in _resolve_lookup
    current = getattr(current, bit)
AttributeError: 'URLResolver' object has no attribute 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 843, in _resolve_lookup
    current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "projdir\.venv\lib\site-packages\django\template\base.py", line 848, in _resolve_lookup
    raise VariableDoesNotExist("Failed lookup for key "
django.template.base.VariableDoesNotExist: Failed lookup for key [name] in <URLResolver <URLPattern list> (None:None) 'en/'>
enzedonline commented 3 years ago

Hi,

Wondering if there's any thoughts on this? I'm building a second wagtail-localize site and seeing the same errors in the logs landing on any page without the language prefix (eg domain/, domain/login etc).

The page with language prefix loads ok afterwards. If I load the page with language prefix, no errors in the logs.

It's not critical, but it means I can't have logging turned on as the logs fill rapidly.

Is this bad setup or is there something needing to be to intercept and handle the error rather than throwing an exception?

For domain/account/profile (django allauth page):

[19/Aug/2021 10:54:21] DEBUG [django.template:869] Exception while resolving variable 'name' in template 'unknown'.
Traceback (most recent call last):
  File "\website\.venv\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "\website\.venv\lib\site-packages\django\core\handlers\base.py", line 167, in _get_response
    callback, callback_args, callback_kwargs = self.resolve_request(request)
  File "\website\.venv\lib\site-packages\django\core\handlers\base.py", line 290, in resolve_request
    resolver_match = resolver.resolve(request.path_info)
  File "\website\.venv\lib\site-packages\django\urls\resolvers.py", line 585, in resolve
    raise Resolver404({'tried': tried, 'path': new_path})
django.urls.exceptions.Resolver404: {'tried': [[<URLResolver <URLPattern list> (admin:admin) 'django-admin/'>], [<URLResolver <module 'wagtail.admin.urls' from '\\website\\.venv\\lib\\site-packages\\wagtail\\admin\\urls\\__init__.py'> (None:None) 'admin/'>], [<URLResolver <module 'wagtail.documents.urls' from '\\website\\.venv\\lib\\site-packages\\wagtail\\documents\\urls.py'> (None:None) 'documents/'>], [<URLPattern '^robots\.txt$' [name='robots']>], [<URLPattern '^sitemap.xml$'>], [<URLResolver <module 'django_comments_xtd.urls' from '\\website\\.venv\\lib\\site-packages\\django_comments_xtd\\urls.py'> (None:None) '^comments/'>], [<URLPattern 'sentry-debug/'>], [<URLPattern 'jsi18n/' [name='javascript-catalog']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'signup/' [name='account_signup']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'login/' [name='account_login']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'logout/' [name='account_logout']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'password/change/' [name='account_change_password']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'password/set/' [name='account_set_password']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'inactive/' [name='account_inactive']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'email/' [name='account_email']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'confirm-email/' [name='account_email_verification_sent']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern '^confirm-email/(?P<key>[-:\w]+)/$' [name='account_confirm_email']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'password/reset/' [name='account_reset_password']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'password/reset/done/' [name='account_reset_password_done']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern '^password/reset/key/(?P<uidb36>[0-9A-Za-z]+)-(?P<key>.+)/$' [name='account_reset_password_from_key']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.account.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\account\\urls.py'> (None:None) ''>, <URLPattern 'password/reset/key/done/' [name='account_reset_password_from_key_done']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <module 'allauth.socialaccount.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\socialaccount\\urls.py'> (None:None) 'social/'>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <URLPattern list> (None:None) 'facebook/'>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLPattern 'facebook/login/token/' [name='facebook_login_by_token']>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <URLPattern list> (None:None) 'google/'>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) ''>, <URLResolver <URLPattern list> (None:None) 'linkedin_oauth2/'>], [<URLResolver <module 'allauth.urls' from '\\website\\.venv\\lib\\site-packages\\allauth\\urls.py'> (None:None) '^accounts/'>], [<URLResolver <module 'userauth.urls' from '\\website\\userauth\\urls.py'> (None:None) 'accounts/'>], [<URLPattern '^static/(?P<path>.*)$'>], [<URLPattern '^media/(?P<path>.*)$'>], [<URLResolver <URLPattern list> (None:None) 'en/'>]], 'path': '404/'}

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "\website\.venv\lib\site-packages\django\template\base.py", line 829, in _resolve_lookup
    current = current[bit]
TypeError: 'URLResolver' object is not subscriptable

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "\website\.venv\lib\site-packages\django\template\base.py", line 837, in _resolve_lookup
    current = getattr(current, bit)
AttributeError: 'URLResolver' object has no attribute 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "\website\.venv\lib\site-packages\django\template\base.py", line 843, in _resolve_lookup
    current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'name'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "\website\.venv\lib\site-packages\django\template\base.py", line 848, in _resolve_lookup
    raise VariableDoesNotExist("Failed lookup for key "
django.template.base.VariableDoesNotExist: Failed lookup for key [name] in <URLResolver <URLPattern list> (admin:admin) 'django-admin/'>

Error block repeats 13x.

For the root page ('/'), key error as: django.template.base.VariableDoesNotExist: Failed lookup for key [name] in <URLResolver <URLPattern list> (None:None) 'en/'> and error block repeated 11 times (in case that's significant?)

enzedonline commented 3 years ago

Well, I take back the 'not-critical' part about this - it's causing 500 errors on certain django auth pages when Debug is switched to False.

Workaround for now is to put a redirect into urlpatterns:

eg url(r'^accounts/password/success/', RedirectView.as_view(pattern_name='password_change_success', permanent=False)),

where the named pattern exists in the i18n_patterns.

For the root page, I've added

path('', RedirectView.as_view(url='/' + Locale.get_active().language_code +'/', permanent=False)),

This also works presuming you've slugged your localized home pages according to ISO language codes.

I think there needs to be a fairly urgent look at how wagtail-localize resolves requests that don't have a lang code in the url for non-wagtail urls.

@kaedroho - does this need to be elevated to bug status?