回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图从<code>Docker container</code>获取一些模板信息以显示在提供的网页上。它正在使用<code>uWSGI</code>。模板的名称是<code>base.html</code></p>
<p>与<code>base.html</code>文件相关联的“装饰”位于<code>static directory</code>中。更具体地说,它位于<code>static/wforms/assets</code>目录中。
下面是如何在模板中使用<code>assets</code>目录。在</p>
<pre><code><link href="{% static 'wforms/assets/global/plugins/font-awesome/css/font-awesome.min.css' %}" rel="stylesheet" type="text/css" />
<link href="{% static 'wforms/assets/global/plugins/simple-line-icons/simple-line-icons.min.css' %}" rel="stylesheet" type="text/css" />
<link href="{% static 'wforms/assets/global/plugins/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet" type="text/css" />
</code></pre>
<p>每当我转到一个使用<code>base.html</code>模板的页面时,都找不到装饰,结果网页一团糟。在PyCharm里一切都很好。当将所有内容移动到Docker容器中的目录结构时,会出现问题。下面是PyCharm中的目录结构。在</p>
<p><a href="https://i.stack.imgur.com/c6aBg.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/c6aBg.png" alt="enter image description here"/></a></p>
<p>我这样启动容器:</p>
^{pr2}$
<p>作为参考,<strong>/home/dockclubdjango/apps/wforms/assets</strong>确实存在,并且其中包含正确的信息。在</p>
<p>然后,我试图转到web主页。页面显示,但所有的“装饰”都不存在。所以,页面看起来有点混乱。像这样:</p>
<p><a href="https://i.stack.imgur.com/sIdac.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/sIdac.png" alt="enter image description here"/></a></p>
<p>我看一下这个页面的源代码并看到下面的内容。在</p>
<pre><code><link href="/static/wforms/assets/global/plugins/bootstrap-daterangepicker/daterangepicker.min.css" rel="stylesheet" type="text/css" /> <<< got 404 error in log file
<link href="/static/wforms/assets/global/plugins/morris/morris.css" rel="stylesheet" type="text/css" /> <<< got 404 error in log file
<link href="/static/wforms/assets/global/plugins/fullcalendar/fullcalendar.min.css" rel="stylesheet" type="text/css" /> <<< got 404 error in log file
</code></pre>
<p>我注意到找不到与<code>assets</code>目录关联的任何项。<strong>列出的每个项目在日志中都会得到一个<code>404 Error</code>。</strong></p>
<p>因此,我尝试了以下方法以不同的方式启动<code>Docker Container</code>(如下所示),但没有成功</p>
<pre><code>docker run -it --rm -p 8888:8888 -v /home/dockcclubdjango/apps/wforms/assets:/static/wforms/assets --name my-running-app my-python-app
</code></pre>
<p>我开始查看<code>settings.py</code>文件,但不确定是什么地方出错了。在</p>
<p><strong>设置.py文件(减少以使其更简单-关注静态目录</strong></p>
<pre><code>import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')
STATIC_DIR = os.path.join(BASE_DIR, 'static')
MEDIA_DIR = os.path.join(BASE_DIR, 'media')
DEBUG = True
ROOT_URLCONF = 'backendworkproj.urls'
WSGI_APPLICATION = 'backendworkproj.wsgi.application'
SESSION_COOKIE_AGE = 10*60
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = "/var/www/cclub.com/static/"
MEDIA_ROOT = MEDIA_DIR
</code></pre>
<p>我看到了这条线
<a href="https://stackoverflow.com/questions/38627393/docker-django-404-for-web-static-files-but-fine-for-admin-static-files">Docker Django 404 for web static files, but fine for admin static files</a></p>
<p>并做出了建议中的修改,但仍然没有起作用(页面上的“装饰”不断出现404个错误)。不知道下一步该去哪里。我错过了什么?在</p>
<p>TIA公司</p>
<h2>更新</h2>
<p>@PekosoG-当我使用下面的建议时,我在运行<strong>docker build-t my python应用程序时得到以下结果。</strong></p>
<pre><code> ---> Running in fde638af597f
Traceback (most recent call last):
File "/code/backendworkproj/manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 356, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 199, in handle
collected = self.collect()
File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 114, in collect
for finder in get_finders():
File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 264, in get_finders
yield get_finder(finder_path)
File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 277, in get_finder
return Finder()
File "/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 66, in __init__
"The STATICFILES_DIRS setting should "
django.core.exceptions.ImproperlyConfigured: The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting
</code></pre>
<h2>更新</h2>
<p>恢复到旧设置(因为上面的解决方案没有解决问题)</p>