Я в процессе интеграции Django_hosts.У меня есть внешние URL-адреса и URL-адреса администратора, успешно интегрированные и работающие, но мои URL-адреса REST API по-прежнему недоступны из-за этой ошибки:
'NoReverseMatch at /en/api/'
Ошибка прослеживается до Django / urls / base.py,но я не уверен, что это вызывает:
Traceback (most recent call last):
File "/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/lib/python3.6/site-packages/django/core/handlers/base.py", line 124, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/lib/python3.6/site-packages/django/contrib/auth/decorators.py", line 23, in _wrapped_view
resolved_login_url = resolve_url(login_url or settings.LOGIN_URL)
File "/lib/python3.6/site-packages/django/shortcuts.py", line 148, in resolve_url
return reverse(to, args=args, kwargs=kwargs)
File "/lib/python3.6/site-packages/django/urls/base.py", line 86, in reverse
raise NoReverseMatch("%s is not a registered namespace" % key)
django.urls.exceptions.NoReverseMatch: 'admin' is not a registered namespace
Это мои файлы hosts.py и api_urls.py:
# hosts.py
host_patterns = patterns(
'',
host(r'www', settings.ROOT_URLCONF, name='www'),
host(r'admin', 'Project.admin_urls', name='admin'),
host(r'api', 'Project.api_urls', name='api'),
)
# api_urls.py
urlpatterns += i18n_patterns (
path('session_security/', include('session_security.urls')),
path('', include('Project.apps.api.urls'), name='api'),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Кроме того, чтобы убить двух зайцев одним выстреломпри попытке преобразовать этот URL:
{% url 'profile' request.user.id %}
в этот URL:
{% host_url 'profile' host 'www' request.user.id %}
Не удается выдать ошибку NoReverseMatch без аргументов, как если бы аргументы игнорировались.
Любая помощь от кого-то знающего об этом пакете или любой из этих проблем будет оценена.
Спасибо.
Обновление
Я решил этоошибка при включении URL-адресов admin.site в файл api_urls.py:
# api_urls.py
urlpatterns += i18n_patterns (
path('session_security/', include('session_security.urls')),
path('', include('Project.apps.api.urls'), name='api'),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
path('', admin.site.urls, name='admin'), <--This is key, but not sure exactly why.
Однако теперь я столкнулся с чем-то странным, что не является ошибкой, но эффективно действует как один для моего использования.дело.Похоже, что API больше не распознает request.user, поэтому даже если пользователь вошел в систему, API считает, что он является AnonymousUser.
* Субдомены API и Admin не распознают вошедшего в систему пользователя.Кажется, что-то связано с SESSION cookie ...