Что эквивалентно 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)
Вернуться на верх