#python #django #nginx
Вопрос:
У меня есть форма, в которой пользователи отправляют последовательности, которые хранятся в модели user_submission. В администраторе Django я добавил пользовательский список, отображающий naming_algorithm (как показано ниже). Для этого требуется объект. последовательность и запускает внешний скрипт и отображает выходные данные в формате HTML. Это хорошо работает на местном уровне. Когда я пытаюсь использовать его на производственном сервере, он показывает плохой шлюз nginx 502. К вашему сведению: Я использую nginx и uWSGI для развертывания. Я использую Django 2.2 и Python3.7.
class UserSubmissionAdmin(admin.ModelAdmin):
list_display = (
'submittersname',
'accession_url',
'naming_algorithm',
)
def naming_algorithm(self, obj):
if ">" in str(obj.sequence).split('n')[0]:
obj.sequence = 'n'.join(
str(obj.sequence).split('n')[1:])
return format_html('<a href="/run_naming_algorithm/?fulltextarea={0}amp;submission_id={1}" target="_blank">Naming Algorithm</a>'.format(obj.sequence, obj.id))
У меня есть несколько вопросов
- На производственном сервере, если я изменю DEBUG=True, вышеуказанная функция будет работать. Если я изменю его на DEBUG=False, nginx сообщит о 502 плохих шлюзах. Почему это происходит и как подойти к проблеме и устранить ее. Любые указатели помогут.
- Как вы можете видеть на скриншоте, я передаю последовательность по URL-адресу. Мне кажется, что должен быть лучший способ сделать это. Я не осознаю этого. У вас есть какие-либо предложения или альтернативные способы?
Комментарии:
1. Работает ли это в рабочей среде, если вы закомментируете общую модель вместе с DEBUG=False?
2. @HemantMalik да, это работает в производстве, если я сохраняю DEBUG=False.
Ответ №1:
Используйте функцию mark_safe() вокруг вашего html
return format_html(mark_safe('<a href="/run_naming_algorithm/?fulltextarea={0}amp;submission_id={1}" target="_blank">Naming Algorithm</a>'.format(obj.sequence, obj.id)))
Комментарии:
1. Спасибо за ответ. Я проверю и обновлю вас в ближайший понедельник.
2. Я попробовал предложить, что это не сработает. Я импортировал mark_safe
from django.utils.html import format_html, mark_safe