Добавление content_type к render_to_response в Django views.py, вызывающее «Ошибка сервера (500)» - PullRequest
0 голосов
/ 17 января 2020

В django 1.11, в views.py я использую функцию render_to_response следующим образом:

return render_to_response(domainObject.template_path, context_dict, context)

Это прекрасно работает. Сейчас я пытаюсь указать content_type для этого ответа как «txt / html». Поэтому я переключаюсь на

content_type = 'txt/html'
return render_to_response(domainObject.template_path, context_dict, context, content_type)

Но с этой настройкой сервер возвращает

Ошибка сервера (500)

Следуя документации на https://docs.djangoproject.com/en/1.8/topics/http/shortcuts/#render к ответу Я думаю, что я предоставляю переменные в правильном порядке ...

Вот полный блок 'def' для справки:

def myview(request):
        context = RequestContext(request)

                if request.homepage:
                        migrationObject = calltomigration()
                else:
                        integrationObject = Integration.objects.filter(subdomain_slug=request.subdomain).get()
        except ObjectDoesNotExist:
                logger.warning(ObjectDoesNotExist)
                raise Http404

        sectionContent = None
        if not request.homepage:
                sectionContent = getLeafpageSectionContent(referenceObject)

        context_dict = {
                'reference': referenceObject,
                'sectionContent': sectionContent,
                'is_homepage': request.homepage
        }

        #  content_type = 'txt/html'

        return render_to_response(domainObject.template_path, context_dict, context)

Вот статус NGINX:

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-01-17 16:34:15 UTC; 40s ago
     Docs: man:nginx(8)
  Process: 14517 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=2)
  Process: 14558 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 14546 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 14562 (nginx)
    Tasks: 2 (limit: 1152)
   CGroup: /system.slice/nginx.service
           ├─14562 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           └─14564 nginx: worker process

Jan 17 16:34:15 ip-172-31-8-232 systemd[1]: nginx.service: Failed with result 'timeout'.
Jan 17 16:34:15 ip-172-31-8-232 systemd[1]: Stopped A high performance web server and a reverse proxy server.
Jan 17 16:34:15 ip-172-31-8-232 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jan 17 16:34:15 ip-172-31-8-232 systemd[1]: nginx.service: Failed to parse PID from file /run/nginx.pid: Invalid argument
Jan 17 16:34:15 ip-172-31-8-232 systemd[1]: Started A high performance web server and a reverse proxy server.
[1]+  Done                    sudo systemctl restart nginx ```

Ответы [ 2 ]

0 голосов
/ 19 января 2020

Сегодня я исправил проблему. Я обнаружил, что в render_to_response тип MIME должен быть указан в третьей позиции (по крайней мере, в настройке, над которой я работаю). В большинстве комбинаций ОС и браузера обнаружен неправильный тип MIME, за исключением Edge на P C. Исправлено сейчас!

0 голосов
/ 17 января 2020

Стандартная функция Django ярлыков ' render ' обеспечивает те же функции, что и ' render_on_response '. Функция
Django 's' render_to_reponse 'устарела в версии 2.2 и официально удалена из Django в версии 3.0. Вы можете проверить примечания к выпуску здесь:
https://docs.djangoproject.com/en/3.0/releases/3.0/
Ознакомьтесь с официальной документацией для функции рендеринга ниже, https://docs.djangoproject.com/en/3.0/topics/http/shortcuts/

Также, тип context_type должен быть 'text / html' вместо 'txt / html'.

...