在gunicorn和nginx之前一切都运行良好,静态文件被提供给网站。但现在,它不再起作用了。
设置.py
STATICFILES_DIRS = [
'/root/vcrm/vcrm1/static/'
]
STATIC_ROOT = os.path.join(BASE_DIR, 'vcrm/static')
STATIC_URL = '/static/'
MEDIA_ROOT = '/root/vcrm/vcrm1/vcrm/media/'
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
/etc/nginx/sites-available/vcrm
server {
listen 80;
server_name 195.110.58.168;
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
root /root/vcrm/vcrm1/vcrm;
}
location = /media {
root /root/vcrm/vcrm1/vcrm;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
Run Code Online (Sandbox Code Playgroud)
}
当我运行collectstatic时:
You have requested to collect static files at the destination
location as specified in your settings:
/root/vcrm/vcrm1/vcrm/static
This will overwrite existing …Run Code Online (Sandbox Code Playgroud) 我使用 Django 3.2.8 遇到了一个奇怪的情况:
部署时,只有一个管理模板被忽略(但不是 if debug == True):
这是我部署后的目录(和之前,它们是相同的):
正确应用了change_form.html,而submit_line.html则不正确debug = false。
change_form.html 的内容:
{% extends "admin/change_form.html" %}
{% load i18n admin_urls %}
{% block inline_field_sets %}
{% for inline_admin_formset in inline_admin_formsets %}
{% include inline_admin_formset.opts.template %}
{% endfor %}
<h3>
<p>WARNING!</p>
</h3>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
Submit_line.html 的内容:
{% load i18n admin_urls %}
<div class="submit-row">
{% if show_save %}
<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" />{% endif %}
{% if show_delete_link %} …Run Code Online (Sandbox Code Playgroud) django-templates django-admin django-staticfiles django-deployment
在我的系统上完成了本地开发的 django 项目后,我按照 Digital Ocean 教程在此处部署了 django 应用程序Digital Ocean Django ASGI 设置教程。
我根据教程配置了gunicorn,并且所有测试和确认都通过了但是当我从其公共IP地址加载我的网站时,该网站加载时没有任何样式或设计,也没有图像......就像纯文本一样(只是html内容)
我的nginx配置如下
server {
listen 80;
server_name XXX.XX.XXX.XX;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
alias /home/username/projectdir/staticfiles;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
Run Code Online (Sandbox Code Playgroud)
我的 django 项目设置如下(有关静态设置的部分)
# The absolute path to the directory where collectstatic will collect static files for deployment.
STATIC_ROOT = BASE_DIR / 'staticfiles'
# The URL to use when referring to static files (where …Run Code Online (Sandbox Code Playgroud) 当我使用allauth时,除了Django现在无法找到静态文件外,一切似乎都能正常工作.没有allauth所有静态文件都被渲染.allauth的设置需要添加
TEMPLATE_CONTEXT_PROCESSORS = (
"allauth.context_processors.allauth",
"allauth.account.context_processors.account"
)
Run Code Online (Sandbox Code Playgroud)
我之前的设置文件中没有TEMPLATE_CONTEXT_PROCESSORS.有什么东西我错过了吗?我该如何解决这个问题.当我看到DEBUG控制台时,我可以看到它正在尝试获取css文件
"GET /accounts/login/css/contact.css"
Run Code Online (Sandbox Code Playgroud)
而它应该这样做
"GET /static/css/contact.css"
Run Code Online (Sandbox Code Playgroud) 要查看静态文件(图像和pdf),我STATIC_DIRS使用包含目录名称的值定义了上传这些文件的位置:
STATICFILES_DIRS = (
'/home/alessandro/Scrivania/progetto/media/photos/custodia/',
'/home/alessandro/Scrivania/progetto/media/definitiva/',
'/home/alessandro/Scrivania/progetto/media/proforma/',
'/home/alessandro/Scrivania/progetto/media/fpdf/';
)
在STATIC_URL中:
STATIC_URL = '/static/'
在已安装的应用中:
INSTALLED_APPS = (
....
'django.contrib.staticfiles',
)
权限是0777.
现在当我想看到图像或pdf文件时,我收到此错误消息.网页未找到
我正在使用此URL:
http://127.0.1:8000/home/alessandro/Scrivania/progetto/media/photos/custodia/powered_by.png
有任何想法吗?为什么会出现这个问题?
只是为了解决这个问题,如果可能的话,我想在没有将它们全部嵌入到app的静态文件夹中的应用程序名称的目录中的情况下执行此操作,这感觉多余.如果这是唯一的方式那么就是生命.
我在用:
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
Run Code Online (Sandbox Code Playgroud)
和:
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
Run Code Online (Sandbox Code Playgroud)
它在运行collectstatic时编译JS和SASS.它们都位于APP_ROOT/static /目录中.
唯一的"问题"是它带来了所有源sass和js文件.在某些时候,我将把这一切都推到S3,我想尽可能避免这种情况.
我发现如果你跑:
python manage.py collectstatic -i sass -i js
Run Code Online (Sandbox Code Playgroud)
它仍然编译我指定的JS和CSS文件,同时保留其余的"源"文件.不幸的是,它也忽略了/ admin /中的每个js文件,因为它匹配/ admin/js /等.我甚至不知道这可能是这个特定项目的问题,但我可以预见将来其他应用程序在哪里我肯定会想要在应用程序中包含静态js/css.
我希望能做的是:
python manage.py collectstatic -i app_name/sass -i app_name/js
Run Code Online (Sandbox Code Playgroud)
正如我在顶部提到的,简单的解决方案就是将我的静态文件作为app_name /添加到文件夹中,就像django.contrib.admin一样.但是,在这一点上,您最终得到了PROJECT_ROOT/app_name/static/app_name/[js | sass | img | data] /的目录结构,我认为应该可以避免冗余.
然后,也许这是最好的选择,以确保避免与其他应用程序冲突?
我已经考虑过编写自定义存储和查找程序,我认为可以自行编写.我想首先检查这里,看看这是否是其他人已经解决的问题,或者,要实现检查是否压倒性的响应只是添加前缀目录.
如果我要自己动手,那么我认为我会走的道路将会延伸django.contrib.staticfiles.finders.AppDirectoriesFinder并超越list().我还不肯定这种方法会起作用,我需要更多地跟踪收集管理命令的进展情况,所以如果有人之前已经完成了这个或类似的东西,或者知道它为什么会/不会起作用,那么任何帮助都是赞赏.
谢谢!
我知道这个问题被多次询问过,但我发现和尝试的答案都没有帮助我.
这些是我的静态文件设置:
STATIC_ROOT = os.path.abspath(SETTINGS_PATH+'/staticfiles/')
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/staticfiles/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(os.path.dirname(__file__), 'static'),
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
Run Code Online (Sandbox Code Playgroud)
在myapp/urls.py中: …
我可能在这里犯了很多错误,因为我仍然无法让静态文件在我的开发环境中正常工作,尽管我非常关注本教程.我有一种感觉,因为它在Django 1.6中的工作方式略有不同,我只能找到以前版本的答案.
这是我的目录结构:
mysite
????app1
????mysite
? ????templates
????resources
????static
? ????css
? ????fonts
? ????js
????app2
Run Code Online (Sandbox Code Playgroud)
我安装的应用程序,以证明我有静态文件:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
'app2',
)
Run Code Online (Sandbox Code Playgroud)
我的模板和静态文件设置:
# Templates
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, "mysite/templates"),
)
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)
我甚至按照我urls.py的建议做了这个:
urlpatterns = patterns('',
...
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)
最后,我的要求:
{% load staticfiles %}
<link href="{% static "css/core.css" %}" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)
如果我直接导航http://127.0.0.1/static/css/core.css,我明白了'css\core.css' could not be found …
我1.3.1现在正在使用django- .想试试最新版本即1.8.1.所以,配置了一个测试项目.我不熟悉如何使用django-1.8.1处理静态文件,因为我对它进行了更多的探索.
我创建了一个/var/www/appmedia/目录并将静态组件放入其中.喜欢bootstrap, css, js, images, etc.
settings.py.
"""
Django settings for myapp project.
Generated by 'django-admin startproject' using Django 1.8.1...
"""
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '+3)e5#343!^(cvy8f9c4hpku*h#$z8*sa)(7a#azv1!!z@d--wsq5s5'
# SECURITY WARNING: don't run with debug …Run Code Online (Sandbox Code Playgroud) 'heroku local'找不到静态文件,但'python manage.py runserver'找到静态文件没有问题.你能帮我解决一下这个问题吗?
settings.py读取:
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
Run Code Online (Sandbox Code Playgroud)
我运行collectstatic,静态文件被复制到STATIC_ROOT:
python manage.py collectstatic
Run Code Online (Sandbox Code Playgroud)
manage.py runserver'找到没有问题的静态文件:
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
虽然'heroku local'会返回"未找到"警告:
11:52:04 AM web.1 | [19/May/2016 10:52:04] WARNING [django.request:170] Not Found: /static/admin/css/base.css
11:52:04 AM web.1 | [19/May/2016 10:52:04] WARNING [django.request:170] Not Found: /static/admin/css/base.css
11:52:04 AM web.1 | [19/May/2016 10:52:04] WARNING [django.request:170] Not Found: /static/admin/css/login.css
11:52:04 AM web.1 | [19/May/2016 10:52:04] WARNING [django.request:170] Not Found: /static/admin/css/login.css
Run Code Online (Sandbox Code Playgroud)
不知道这里发生了什么.'heroku local'和'manage.py runserver'都应该看到静态文件.
注意:我使用Django == 1.8.2并且settings.py包含:
import …Run Code Online (Sandbox Code Playgroud)