在Heroku Server上部署Django错误500-据说是静态文件问题

如何解决在Heroku Server上部署Django错误500-据说是静态文件问题

我已经将django项目部署在Heroku上(这是一个非常基础的项目,没有数据库)。 主页正在运行,但是当我从Django项目中请求包含imag的页面时出现服务器错误(500)。 当我问一个带有互联网图像的页面时,它工作正常。 因此,我的推论是无法正确提供静态文件,但我在编码中没有发现错误。

Heroku日志:

2020-09-10T04:31:02.719831 + 00:00 app [web.1]:10.63.145.103--[10 / Sep / 2020:04:31:02 +0000]“ GET / ES -home HTTP / 1.1“ 500 145” https://hamaktest.herokuapp.com/“” Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,like Gecko)Chrome / 85.0.4183.102 Safari / 537.36 “

2020-09-10T04:31:02.720549 + 00:00 heroku [router]:at = info method = GET path =“ / ES-home” host = hamaktest.herokuapp.com request_id = f9cc73c5-b170 -4853-9ca7-368255259a52 fwd =“ 117.196.158.121” dyno = web.1 connect = 0ms service = 60ms status = 500 bytes = 410 protocol = https

在Heroku版本中:

安装收集的软件包:asgiref,pytz,sqlparse,Django,gunicorn,whitenoise

远程:成功安装Django-3.1.1 asgiref-3.2.10 gunicorn-20.0.4 pytz-2020.1 sqlparse-0.3.1 whitenoise-5.2.0

远程:-----> $ python manage.py collectstatic --noinput

远程:将204个静态文件复制到'/ tmp / build_72d0a30f / staticfiles'中,进行481个后处理。

任何想法都值得欢迎。谢谢。

Jytar

我的settings.py文件:


ALLOWED_HOSTS = ['.hamaktest.herokuapp.com','127.0.0.1']

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

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','whitenoise.middleware.WhiteNoiseMiddleware',]

ROOT_URLCONF = 'hamak.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,"templates")],'APP_DIRS': True,'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},]

WSGI_APPLICATION = 'hamak.wsgi.application'

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR,'db.sqlite3'),}
}

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',{
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',{
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',{
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',]


LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


STATIC_URL = '/static/'

MEDIA_URL = '/images/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

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

MEDIA_ROOT = os.path.join(BASE_DIR,'static/images')

STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'```

解决方法

当Django 3.1发布时,您引用BASE_DIR的方式发生了变化。如果您不想使用新版本的Django,请确保添加了要在需求中使用的版本。 txt文件。您的settings.py文件中具有(os.path.join)的任何地方都需要用新语法替换。

$(document).ready(function(){
        $('#gridCheck1,#gridCheck2,#gridCheck3').click(function() { 
        if(this.checked){
            $.ajax({
                type: "POST",url: 'change_state.php',data: {
                    state: $(this).attr('value'),order_id: $(this).data('order'),},//--> send id of checked checkbox on other page
                success: function(data) {                           
                    $('#container').html(data);
                },error: function() {
                    //alert('it broke');
                },complete: function() {
                     setInterval(function() {
                         location.reload();
                     },1000);
                }
            });
        }
      });

但是,如果这不是造成问题的原因,我发现通过在推送到heroku期间禁用静态文件收集可以解决问题。

groovy-maven-plugin

在成功建立了禁用staticfiles集合的构建之后,我进入了heroku CLI并运行

def get_umsatzsteuer_identifikationsnummer(string):
  # Demo --> https://regex101.com/r/VHaS7Y/1
  
  reg = r'DE[0-9 ]{12}|DE[0-9]{9}|DE [0-9]{9}'
  match = re.compile(reg)
  matched_words = match.findall(string)

  return matched_words


string = "I want to get this DE813992525 and this DE813992526 number and this
 number DE 813 992 526 and this number  DE 813992526. I do not want the bank
 account number: IBAN DE06300501100011054517."

get_umsatzsteuer_identifikationsnummer(string)


>>>>> ['DE813992525','DE813992526','DE 813 992 526','DE 813992526','DE063005011000']

,

问题已解决。

Django在图像代码中接受反斜杠:src =“ {%static” images \ picture01.png“%}”

但是Heroku没有。

我改为src =“ {%static” images / picture01.png“%}”

Django和Heroku都可以使用。

我使用了反斜杠“”,如Django教程中所示。因此请小心,因为这花费了我很多时间才能发现问题。

,

对于遇到这个常见问题的其他人。

确保您的 HTML 整洁。我在我的基本模板中注释掉了对 CSS 文件的不正确引用,这对我来说是导致这个问题的原因。只需删除那些即可解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-