Django2与@Vue/Cli3整合--访问静态文件404问题

我们首先简要来看下Django2与@Vue/Cli3如何整合


  1. 创建Django2项目
    通过django-admin startproject mysite命令创建
  2. 创建后端服务app
    cd mysite目录后,django-admin startapp backend
  3. 创建vue项目
    vue create frontend

通过三个步骤后,我们可以看到在mysite目录下存在frontend,backend,manage.py,db.sqlite3平级目录。

下面就是django的配置,打开settings.py(在backend目录下)

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['frontend/dist'],  # 主要是这行
        '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',
            ],
        },
    },
]

STATIC_URL = '/static/'
添加这行
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "frontend/dist"),
]

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', TemplateView.as_view(template_name='index.html')),  # 添加这行
]

下面就npm run build,在frontend下会生成dist目录,起django项目,python manage.py runserver,访问http://127.0.0.1:8000,惊奇的发现,首页index.html是可以访问,但是绑定的静态文件全都404

发现问题


为啥会404,我们先看下index.html的文件

截取其中一段
<link href=/css/login.d7cd78d9.css rel=prefetch>

按这个相对路径看,index.htmlcss是同级目录,那href不是应该是./css/login.d7cd78d9.css(多个点),修改,重新运行,发现还是404.

我们再看看django访问静态文件的配置,是访问dist目录下似乎没毛病,但是我们忘记了还有STATIC_URL是访问带static文件夹的,官方文档

解决问题


frontend目录下创建vue.config.js

module.exports = {
    assetsDir: 'static',  #指定`build`时,在静态文件上一层添加static目录
};

接下来就是重新build(index.html的引用地址也同步改了),起django,访问,解决问题

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值