Что эквивалентно url(r'name/$') с использованием пути? Я не хочу, чтобы пользователи получали доступ к пути django
При рассмотрении функции url() в django, '$' позволяет блокировать путь к url. Что эквивалентно при рассмотрении 'path'?
Точнее говоря, у меня есть следующее
path('',views.home,name='home'),
path('json', json, name="json"),
моя домашняя страница вызывает json-файл для построения графика, однако если пользователь набирает url '.../json', он может получить доступ к json-файлу данных. Я хочу, чтобы у пользователей не было доступа к пути /json, но я все еще хочу, чтобы моя домашняя страница обращалась к этому пути json.
Спасибо
Это не совсем возможно, потому что когда ваша домашняя страница загружается пользователем, страница говорит ему запросить json-данные с вашего сервера. Браузер видит, что будет сделан запрос на эти данные, и нет почти никакой разницы между переходом пользователя по адресу http://yoursite.com и обращением браузера по адресу http://yoursite.com/json.
Один из способов, который можно попробовать, если данные загружаются только один раз, - добавить одноразовый токен к домашней странице (который отличается для каждого запроса) и позволить браузеру использовать его для разрешения запроса.
def home(request):
# do everything
context['token'] = generate_token()
session['json_token'] = context['token']
return render()
def json(request):
if request.GET.get('token', '') == session['json_token']:
del session['json_token']
# generate_data
return data
return HttpResponse(status_code=405)