【问题标题】:Django custom list_display in admin - problem in production server管理员中的 Django 自定义 list_display - 生产服务器中的问题
【发布时间】:2021-03-05 16:08:52
【问题描述】:

我有一个表单,用户提交存储在 user_submission 模型中的序列。在 Django admin 中,我添加了一个自定义列表显示命名算法(如下所示)。它需要obj。序列并运行外部脚本并以 HTML 格式显示输出。它在本地运行良好。当我尝试在生产服务器上使用它时,它显示 nginx 502 Bad Gateway。仅供参考:我使用 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}&submission_id={1}" target="_blank">Naming Algorithm</a>'.format(obj.sequence, obj.id))

我有几个问题

  1. 在生产服务器中,如果我更改 DEBUG=True 上述功能有效。如果我将其更改为 DEBUG=False nginx 报告 502 Bad Gateway。为什么会发生这种情况以及如何解决和解决问题。任何指针都会有所帮助。

  2. 正如您在屏幕截图中看到的,我通过 URL 传递序列。在我看来,必须有更好的方法来做到这一点。我不知道。您有什么建议或替代方法吗?

【问题讨论】:

  • 如果您将共享模型连同 DEBUG=False 一起注释掉,它在生产中是否有效?
  • @HemantMalik 是的,如果我保持 DEBUG=False,它可以在生产中工作。

标签: python django nginx


【解决方案1】:

在你的 html 周围使用 mark_safe()

return format_html(mark_safe('<a href="/run_naming_algorithm/?fulltextarea={0}&submission_id={1}" target="_blank">Naming Algorithm</a>'.format(obj.sequence, obj.id)))

【讨论】:

  • 感谢您的回复。我会在下周一测试和更新你。
  • 我尝试了它不起作用的建议。我已经导入了 mark_safe from django.utils.html import format_html, mark_safe
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 2021-10-14
  • 2012-12-23
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多