我尝试过使用react作为前端部署django项目。我在react中执行了'npm run build',并将所有构建的文件移动到django项目中的'client'文件夹中,如enter image description here
我把“link”和“script”标签中的“href”都改成了./ like
<link rel="icon" href="./favicon.ico" />
<link rel="manifest" href="./manifest.json" />
<script defer="defer" src="./static/js/main.a1de6b00.js"></script>
字符串
在index.html的“客户端”文件夹中。
在setting.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'client')],
'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_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'client/static')
]
DEBUG = False
型
我还更改了静态根目录和staticfiles_dirs以及debug
在mysite/url.py
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from django.views.generic import TemplateView
urlpatterns = [
path('',TemplateView.as_view(template_name="index.html"), name='index'),
path('admin/', admin.site.urls),
path('api/', include('api.urls'))
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
型
我为“”添加了一行代码
但是当我运行'python manage.py runserver'时,似乎仍然存在加载静态文件(如enter image description here)的问题。
1条答案
按热度按时间06odsfpq1#
我注意到你的Django项目将
DEBUG
设置为False
,但根据截图,你似乎正在开发服务器上运行。在开发环境中,设置DEBUG = True
是必不可少的;否则,可能找不到静态文件。如果您已经将项目部署到生产环境,则需要执行
python manage.py collectstatic
来适当地管理静态文件。你可以利用Django的
{% static %}
模板标签为你的静态文件动态生成URL。这里是一个改进的版本:字符串
这样,
{% static %}
模板标记将处理静态文件的正确URL,使HTML更加灵活和适应性强。