Django2与@Vue/Cli3整合--访问静态文件404问题
我们首先简要来看下Django2与@Vue/Cli3如何整合创建Django2项目通过django-admin startproject mysite命令创建创建后端服务appcd mysite目录后,django-admin startapp backend创建vue项目vue create frontend通过三个步骤后,我们可以看到在mysite目录下存在frontend...
·
我们首先简要来看下Django2与@Vue/Cli3如何整合
- 创建Django2项目
通过django-admin startproject mysite
命令创建 - 创建后端服务app
cd mysite
目录后,django-admin startapp backend
- 创建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.html
与css
是同级目录,那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,访问,解决问题
更多推荐
已为社区贡献1条内容
所有评论(0)