我的Django应用程序中的静态文件有问题。
我使用Django REST Framework和Angular 6创建了一个简单的博客应用程序。它在我的本地开发环境中运行良好,但是在将其部署到生产环境中存在问题。问题是,该应用程序正在加载(我知道这是因为根路由是到/ app的重定向,并且我已正确重定向),但是没有加载任何静态文件。
这是我与静态文件相关的配置的一部分:
<table>
<tbody>
<tr>
<td>
<select class="solflow">
<option>Select an Option</option>
<option>Option 1</option>
<option>Option 2</option>
</select>
<select class="solflow">
<option>Select an Option</option>
<option>Option 1</option>
<option>Option 2</option>
</select>
</tr>
</tbody>
<tfoot>
<tr>
<td>
<button class="button add" type="button">Add</button>
<button class="button remove" type="button">Remove</button>
</td>
</tr>
</tfoot>
</table>
<script>
function tableClickHandler(e) {
if (e.target.classList.contains('add')) {
let tbody = this.querySelector('tbody');
let row = tbody.querySelector('tr');
tbody.appendChild( row.cloneNode(true) );
}
if (e.target.classList.contains('remove')) {
var tbody = this.querySelector('tbody');
var row = tbody.querySelectorAll('tr');
if (row.length > 1) {
tbody.removeChild(row[row.length-1]);
}
}
}
function tableChangeHandler(e) {
if (e.target.classList.contains('solflow')) {
let solflows = this.querySelectorAll('.solflow');
let solflow = e.target;
let index = -1;
solflows.forEach(function(el, ind){
if (el === solflow) { index = ind }
});
console.log(index, solflow.value);
}
}
document.querySelector('table').addEventListener('click', tableClickHandler);
document.querySelector('table').addEventListener('change', tableChangeHandler);
</script>
路径是正确的,我确定对它们进行了三重检查。这是在Django应用程序中配置的路由:
STATIC_URL = '/static/'
BASE_DIR = os.path.join(
os.path.dirname(os.path.dirname(__file__)), '..', '..', '..'
)
STATIC_ROOT = os.path.join(BASE_DIR, 'app', 'static')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'frontend'),
]
INSTALLED_APPS = [
...
'django.contrib.staticfiles'
...
]
我能够无任何错误地运行urlpatterns = [
url('^api/', include(api_patterns)),
url('^admin/', admin.site.urls),
url('^app/', serve, kwargs={'path': 'index.html'}),
url('^$', HomepageView.as_view(), name='homepage-redirection'),
]
,并且所有静态文件都已正确复制到静态目录中。管理应用程序的静态文件也未正确加载。这是我项目中目录的粗略结构:
manage.py collectstatic
应用程序服务器是带有Phusion Passenger的Nginx(这是由我租用服务器的公司配置的)。我真的不知道我还能在这里添加什么。有谁知道这里有什么问题吗?可能有些暗示是API端点不可访问。我可以访问管理应用程序,但不能访问API(两者都在同一urls文件中配置)。