Django: установить значение cook ie, щелкнув URL-адрес, а затем использовать его в представлении? - PullRequest
0 голосов
/ 30 марта 2020

Я бы хотел, чтобы пользователь мог щелкнуть ссылку в раскрывающемся меню, чтобы выбрать свое хранилище, сохранить данные выбора (идентификатор магазина) в кулинарии ie, а затем использовать данные в кулинаре ie для повторной загрузки страницы. Страница должна загружать отчеты для выбранного магазина. Перед тем, как пользователь выберет страницу, будут показаны данные для «хранилища по умолчанию». Я думаю, что мне нужно что-то вроде переменной "выбранный магазин"? Представление создает iframe и нуждается в идентификаторе хранилища в качестве одного из параметров.

Мое приложение имеет модель организации, когда для пользователя создается организация. У организаций могут быть магазины.

models.py


class Org(models.Model):

  name = models.CharField(blank=True, max_length=100)
  client_id = models.IntegerField()
  default_store = models.OneToOneField('Store',
    on_delete=models.SET_NULL,
    null=True,blank=True,
    related_name='+')

  def __str__(self):
    return self.name

class Store(models.Model):

  name = models.CharField(blank=True, max_length=100)
  org = models.ForeignKey('Org', on_delete=models.CASCADE)
  store_id = models.IntegerField(null=True, blank=True)

  def __str__(self):
    return self.name


class Profile(models.Model):
  user = models.OneToOneField(User, on_delete=models.CASCADE)
  org = models.ForeignKey('Org', 
    on_delete=models.SET_NULL,
    null=True, blank=True)

  def __str__(self):
    return self.user.username

@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
  if created:
    Profile.objects.create(user=instance)
  instance.profile.save()

В своем шаблоне я использую приведенное ниже для создания ссылок на магазины, которые есть у организации. Когда пользователь нажимает на ссылку, я хотел бы, чтобы идентификатор магазина был сохранен в cook ie, затем обновите sh страницу и используйте значение для загрузки страницы.

{% for store in request.user.profile.org.store_set.all %}
    <a class="dropdown-item" href="STUFF_HERE">{{ store }}</a>
{% endfor %}

Вот фрагмент из определения в представлении, который будет принимать идентификатор магазина.

def report(request, dashboard_id):

  payload = {
      "resource": {"dashboard": dashboard_id},
      "params": {
        "store_id": STORE_ID_FROM_COOKIE or Default_Store
      },

    }

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

Это не обязательно хранить в поваре ie, но я не могу придумать другого способа сделать это, кроме как открыть для себя другие способы.

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