【问题标题】:Django/Gunicorn/Nginx: wrong JS files seems to be servedDjango/Gunicorn/Nginx:似乎提供了错误的 JS 文件
【发布时间】:2021-01-31 06:34:44
【问题描述】:

我的项目在本地工作

我已经在远程服务器中使用// 部署了我的项目

我有一个带有选项列表的选择按钮 (id = id_patient)。当用户选择一个选项时,与该选项相关的信息将使用 ajax 请求显示。但在远程服务器上,信息不显示。

当我使用我的网络浏览器调试工具(见图)时,看起来它不是提供的好的 js 文件

但是在我服务器上的静态文件夹中,是好的js文件...

// affichage des informations sur le patient sélectionné pour la ré-allocation
$("#id_patient").on("click", function (event) {

    var csrftoken = getCookie('csrftoken');

    if ($(this).val() != "") {
        $.ajax({
            type: "POST",
            url: $("#form_reallocation").data("patient-url"),
            data: {
                csrfmiddlewaretoken: csrftoken,
                'patient': $(this).val(),
            },
            dataType: 'html',
            success: function (data) {
                $("#information_patient").html(data);
            }

        });
    } else {
        $("#information_patient").children().remove();
    }

});

要收集新的静态文件,我有 run python manage.py collectstatic 并收集了文件,但我有一条警告消息,表明静态文件中可能存在重复:

找到另一个目标路径为“randomization/js/script.js”的文件。它将被忽略,因为只收集第一个遇到的文件。如果这不是您想要的,请确保每个静态文件都有唯一的路径。

我该如何解决这个问题?

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'crispy_forms',
    'widget_tweaks',
    'bootstrap4',

    'registration.apps.RegistrationConfig',
    'monitor.apps.MonitorConfig',
    'randomization.apps.RandomizationConfig',
    'parameters.apps.ParametersConfig',
    'unblind.apps.UnblindConfig',
    'pharmacy.apps.PharmacyConfig',
    'export.apps.ExportConfig',
    'randomization_pk.apps.RandomizationPkConfig',

    'django_extensions',
    'debug_toolbar',

    'partial_date',
    'safedelete',
    'simple_history',

]

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR,'static'),
    os.path.join(BASE_DIR,'randomization/static'),
    os.path.join(BASE_DIR,'unblind/static'),
    os.path.join(BASE_DIR,'pharmacy/static'),
)
STATIC_ROOT = '/home/test/intensetbm_static'

【问题讨论】:

    标签: django gunicorn supervisor javascript python django ajax static


    【解决方案1】:

    如果您在生产模式下运行,并且 DEBUG=False,您必须配置一个网络服务器来提供静态文件。

    另一种方法是使用 whitenoise 将静态文件作为中间件提供服务,它不会处理 Django 管道以提供静态服务。

    尝试删除 STATICFILES_DIRS,默认情况下,Django 会查找 INSTALLED_APPS 中的所有“静态”文件夹,并使用 STATIC_ROOT 的相对路径。

    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    

    之后,运行:

    python manage.py collectstatic

    再次。

    【讨论】:

    • 我的项目使用 DEBUG=True 部署在 preprod 中,我运行 python manage.py colecstatic 来提供我的静态文件。而事实上,静态是作为 boostrap css 服务的......
    • 你有 GitHub 存储库吗?这样我可以帮助你。
    • 尝试从设置中删除 STATICFILES_DIRS。 Django 已经在 app 中寻找静态文件夹了。
    • 我已删除 STATICFILES_DIRS 并运行 collectstatic(我不再有警告消息)并重新启动我的服务器但仍然无法正常工作
    • 在 STATIC_ROOT 上使用相对路径。阅读帖子,希望对您有所帮助。
    猜你喜欢
    • 2015-11-30
    • 2013-06-27
    • 2017-05-31
    • 2021-07-18
    • 2023-03-05
    • 2016-01-02
    • 2011-04-25
    • 2021-05-27
    • 2013-03-13
    相关资源
    最近更新 更多