Django: Как эффективно отобразить данные в моем шаблоне? - PullRequest
0 голосов
/ 26 августа 2018

Я сохраняю доступность пользователей в своей базе данных в виде чисел. 1 пользователь доступен, 0 недоступен. Например, если пользователь доступен в понедельник утром и вечером, но не днем, в моей базе данных будет « 101 » Теперь я хочу показать своим пользователям их доступность. Моя идея заключалась в том, что для каждого случая я буду создавать и показывать им разные изображения. К сожалению, на 7 дней слишком много возможностей.

Мой вопрос: как я могу эффективно отобразить эти данные в моем шаблоне?

Я начал писать свои взгляды, вот оно:

    if request.user.is_authenticated:
    try:
        name = coach.objects.get(user=request.user)
    except coach.DoesNotExist:
        name = coach(user=request.user)
    objs = Lesson.objects.all().filter(mycoach = name)
    args = {'objs': objs}
    if name.monday=="111" and name.tuesday=="111" and name.wednesday=="111" and name.thursday=="111" and name.friday=="111" and name.saturday=="111" and name.sunday=="111" :
        args['image_url'] = static('img/111111111111111111111.pdf')
    if name.monday=="011" and name.tuesday=="111" and name.wednesday=="111" and name.thursday=="111" and name.friday=="111" and name.saturday=="111" and name.sunday=="111" :
        args['image_url'] = static('img/011111111111111111111.pdf')

    messages.add_message(request, messages.INFO, 'Welcome to your profile')
    return render(request, 'Task.html', args)
else:
    return render(request, 'home.html')

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

Создание имени изображения

Мы можем «сгенерировать» имя URL-адреса изображения, «объединив» конфигурацию дней вместе, например:

args['image_url'] = static(
    <b>'img/{}{}{}{}{}{}{}.pdf'</b>.format(
        name.monday,
        name.tuesday,
        name.wednesday,
        name.thursday,
        name.friday,
        name.saturday,
        name.sunday
    )
)

Но это, тем не менее, все ещеозначает, что вам потребуется сгенерировать 2 21 = 2'097'152 изображений.

Создание списка изображений

Так что мне интересно,не более эффективно отображать семь изображений (одно изображение за другим) и, таким образом, рассматривать его как список из семи изображений, и каждое изображение имеет восемь возможностей.Таким образом, мы «отправляем» представление как:

args['image_urls'] = {
    k: static('img/{}.pdf'.format(getattr(name, k)))
    for k in ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
}

Это будет означать, что шаблон выглядит примерно так:

<!-- my schedule -->
<img src="{{ image_urls.monday }}">
<img src="{{ image_urls.tuesday }}">
<img src="{{ image_urls.wednesday }}">
<img src="{{ image_urls.thursday }}">
<img src="{{ image_urls.friday }}">
<img src="{{ image_urls.saturday }}">
<img src="{{ image_urls.sunday }}">

Тогда вам нужно всего лишь сгенерировать восемь изображений: 000.pdf,001.pdf, 010.pdf и т. Д.

0 голосов
/ 26 августа 2018

Если у вас уже есть все возможные изображения, вы можете получить путь к изображению следующим образом:

args['image_url'] = static('img/{}{}{}{}{}{}{}.pdf'.format(
    name.monday, name.tuesday, name.wednesday, name.thursday, name.friday, name.saturday, name.sunday
))

Или вы можете сделать некоторое динамическое представление в HTML / CSS / javascript в вашем шаблоне.Раскраска таблицы или создание графика с использованием библиотеки js для доступа к вашим данным в шаблоне: {{name.monday.0}} для доступности в понедельник утром и т. Д. *

См. Язык шаблонов Django doc .

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