Как мне запутать данные в переменных в jinja2? например variable = "John Smith", я хочу что-то вроде "Odsv Wgtvs" - PullRequest
0 голосов
/ 23 января 2019

Поэтому я пытаюсь создать страницу, на которой детали отображаются только пользователям, вошедшим в систему. Я могу изменять содержимое статически, используя

{% if user.is_authenticated %}

Так что я могу заменить что-то вроде {{ celebrity.name}} на Dummy Name, но тогда все вхождения будут одинаковыми.

Я надеюсь, что есть простой способ связываться с celebrity.name, чтобы скрыть фактические данные.

Если нет простого способа, я с радостью напишу свою собственную функцию, но на данный момент я не уверен, стоит ли мне писать ее в jinja2 в шаблоне html или я должен делать это в views.py, чтобы был бы признателен за некоторые рекомендации.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Использование set

{% if user.is_authenticated %}
  {% set celebrity_name = celebrity.name %}
{% else %}
  {% set celebrity_name = "dummy" %}

Или вы хотите иметь уникальные фиктивные значения ..? Вы можете назначить что-нибудь от Python до celebrity_name, если хотите использовать другие значения.

0 голосов
/ 23 января 2019

Вы можете написать свой собственный собственный шаблонный фильтр :

from django import template
register = template.Library()

@register.filter
def obfuscate(value, user):
    if user.is_authenticated():
        return value

    # do something before returning
    return '#SECRET#' + value + '#SECRET#'

Это может быть пользователь в шаблоне:

{{ celebrity.name|obfuscate:user }}

Если запутываниедолжен быть детерминированным (одни и те же значения всегда дают один и тот же запутанный результат), который вы могли бы использовать хеш-функцией (будет возвращать сплошные, а не реальные имена), или фиксированный словарь, который вы используете для подстановки имен, или что-то еще.

Если замена может быть недетерминированной, вы можете использовать некоторые случайные замены символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...