Почему django продолжает использовать старое пространство имен администратора наряду с новым пользовательским url администратора?
Я разрабатываю приложение на django. Я хочу изменить url администратора с помощью переменной окружения.
Вот как я получаю его в urls.py:
import os
admin_url = os.getenv('SUPERUSER_URL', 'custom-admin/') # Default is 'custom-admin/' if no key is set
# Also, the environment variable has a slash at the end
В urlpatterns он определяется следующим образом:
urlpatterns = [
path(admin_url, admin.site.urls),
# more views...
]
Всякий раз, когда я пытаюсь получить доступ к своей панели администратора, я могу сделать это без проблем, используя новое имя. Но проблема заключается в двух вещах:
- После того, как я получил доступ к админ-панели, при любой попытке обратиться к модели, связанной с панелью, она будет перенаправлена на url, с которым ассоциируется оригинальное пространство имен админки в django. Например, admin/users вместо custom-admin/users .
- Вторая проблема заключается в том, что я все еще могу получить доступ к панели администратора, используя оригинальное имя 'admin' .
Я не использую никаких пользовательских шаблонов админки, я просто определил кучу моделей для использования с админкой сайта в файле admin.py.
<
from django.contrib import admin
from .models import User, Foo
from django.contrib.auth.admin import UserAdmin
class CustomUserAdmin(UserAdmin):
''' Custom User Admin to inherit the user model '''
model = User
# some data
class FooAdmin(admin.modelAdmin):
list_display = ('foo', 'bar')
search_fields = ('foo', 'bar')
admin.site.register(User, CustomUserAdmin),
admin.site.register(Foo, FooAdmin)
Вот фрагмент моего файла admin.py, если вам нужно посмотреть, как я их реализую:
Мне бы очень пригодился совет.
РЕДАКТИРОВАТЬ:
Похоже, я допустил ошибку, предположив, что папка проекта с urls.py будет пустой. Я заменил строку включения администратора на код, приведенный выше.