IE 11 - проблема представлений на основе Django - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть приложение Django, и я использую представления на основе классов в некоторых его частях.Когда я пытаюсь получить доступ к этим представлениям в IE 11, он загружает html вместо его рендеринга.Я искал в Интернете и обнаружил, что другие посты рассказывают о той же проблеме: https://www.reddit.com/r/django/comments/74r2af/django_not_working_with_internet_explorer/ и Django: Internet Explorer загружает контент страницы, а не отображает ее IE 11 Загрузки Страница вместо открытияэто работает в Chrome и Firefox

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

class BaseContentMixin(ActiveLoginRequiredMixin, TenantHasRolePermMixin, TenantActiveNotExpiredMixin, TenantHasPermMixin, SetDefaultTimezoneMixin):
"""
Attributes:
    content (str): content name, i.e 'training'.
    content_type (str): content type, 'shared' or 'custom'.
    permission (str): permission, i.e 'TRAININGS'.
"""
content = ''
content_type = ''
role_permission = 'SEE'
permission = ''

def get_content_class(self):
    return Util.get_content_class('{}-{}'.format(self.content, self.content_type))

def get_content_shared_class(self):
    return Util.get_content_class('{}-shared'.format(self.content))

class ContentListView(BaseContentMixin, TemplateView):

def get_context_data(self, **kwargs):
    context = super(ContentListView, self).get_context_data(**kwargs)
    context['title'] = Util.get_content_title(self.content)
    context['active'] = self.content
    context['submenu_active'] = '{}_{}'.format(self.content, self.content_type)
    context['objects'] = self.get_content_class().objects.get_for_user(self.request.user)
    context['toggle_url'] = reverse('{}_{}_active_toggle'.format(self.content, self.content_type))
    context['add_url'] = reverse('{}_{}_add'.format(self.content, self.content_type), kwargs={'lang': get_language()})

    if self.content_type == 'custom':
        contents_shared = self.get_content_shared_class().objects.get_topics(self.request.user)
        context['form'] = Util.get_content_form_from_template(self.content)(contents_shared=contents_shared)
        context['add_url_from_template'] = reverse('{}_custom_add_from_template'.format(self.content), kwargs={'lang': get_language()})
    return context

Когда янапечатайте контекст, который он мне дает:

{
  'add_url_from_template': u'/trainings/custom/add-from-template/es-ar/',
  'form': <TrainingCustomFromTemplateFrombound=False,
  valid=Unknown,
  fields=(trainings_template)>,
  'title': u'M\xf3dulos Interactivos',
  'add_url': u'/trainings/custom/add/es-ar/',
  'objects': <TranslationQueryset[
    <TrainingCustom: 1a1a1a1a1aa1>,
    <TrainingCustom: DoubleTest1>,
    <TrainingCustom: DoubleTest2>,
    <TrainingCustom: Nuevito>,
    <TrainingCustom: TestCampaign4>,
    <TrainingCustom: TestCampaignDOUBLETEST>,
    <TrainingCustom: TestCampaignDoubleTest1>,
    <TrainingCustom: TestCampaignTest>,
    <TrainingCustom: TestCampaignTest2>,
    <TrainingCustom: TestCampaignTest3>,
    <TrainingCustom: aversifunk>,
    <TrainingCustom: eeee>,
    <TrainingCustom: qweqweqwew>,
    <TrainingCustom: rrrr>,
    <TrainingCustom: weqwe>,
    <TrainingCustom: wqeqweqwe>
  ]>,
  'toggle_url': u'/trainings/custom/active-toggle/',
  'submenu_active': 'training_custom',
  'active': 'training',
  u'view': <trainingcustom.views.TrainingCustomListViewobjectat0x10af0b550>
}

В этом нет ничего плохого, я застрял здесь.Я подумал, что если бы это была проблема совместимости TemplateView / IE11, я должен был бы найти некоторую информацию об этом.

1 Ответ

0 голосов
/ 27 февраля 2019

BaseContentMixin не следует использовать поле с именем content_type, поскольку оно будет конфликтовать с полем с таким же именем в TemplateView, которое в конечном итоге используется для установки ответа .Content-Type заголовок.Когда вы переопределяете это значение на 'custom', вы путаете браузер, потому что это недопустимый тип контента.

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