Django - Как я могу ограничить доступ к url на основе среды, в которой запущено приложение
У меня есть локальная среда и среда постановки, которые я устанавливаю с помощью DJANGO_SETTINGS_MODULE. Я хочу, чтобы этот URL был доступен только в среде постановки. Как я могу узнать, что текущей средой является staging и ограничить URL только ею. Вот мой URL
path("testing_page/", views.testing_page_view, name="testing_page"),
Урл базы хранения - https://myapp-staging.domain.com/
Вид -
def testing_page_view(request):
if request.method == "GET":
return render(request, "testing_page.html")
else:
values = request.POST.dict()
return HttpResponseRedirect(login_link)
Сначала необходимо импортировать Django conf :
from django.conf import settings
Тогда в зависимости от вашего случая что-то вроде этого может сработать :
"https://myapp-staging.domain.com/" if settings.DEBUG else "https://myapp.domain.com/"
Предположим, что у вас есть отладка, которая отличается в staging и local, иначе просто добавьте новую переменную STAGING = TRUE
Ограничения доступа должны обрабатываться в вашем представлении. Например, вы можете вызвать исключение 404, если кто-то попытается получить доступ к пути в среде staging.
from djnago.conf import settings
from django.http import Http404
def testing_page_view(request):
if settings.YOUR_ENVIRONMENT_VARIABLE == 'staging':
#Here you can handle the case when the path is accessed in staging
raise Http404('Only accessible in local environment')
if request.method == "GET":
return render(request, "testing_page.html")
else:
values = request.POST.dict()
return HttpResponseRedirect(login_link)