它应该自动列在Settings.py中还是我必须添加它?我在开发过程中提供图像文件非常困难,而且文档对我的品味太过简洁,并且由于某种原因不能清楚地向我说清楚.我想查看我的template_context_processors是什么,但它位于何处?它不在我的settings.py文件中.我是否需要通常进行编辑?
("django.contrib.auth.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.contrib.messages.context_processors.messages")
Run Code Online (Sandbox Code Playgroud) 当我尝试访问时http://127.0.0.1:8000/admin,我得到了这个。
我的文件夹结构是:
django-react-nginx
|
|_ _ docker-compose.yml
|
> backend
|
|_ Dockerfile
|
|_ entrypoint.sh
> languages
|
|_ settings.py
> media
> static # This folder appears after running docker-compose -d --build
> nginx
|
|_ default.conf
|
|_ Dockerfile
Run Code Online (Sandbox Code Playgroud)
现在
这是文件
DEBUG = True
ALLOWED_HOSTS = ['*']
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
FROM python:3.8
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR /backend …Run Code Online (Sandbox Code Playgroud) 我正在使用Django runserver进行开发.当我部署到我的生产服务器时,我可以看到所有静态文件,但不能在本地计算机上看到.
我做了collectstatic,我已经设定了DEBUG = True.
我在网上发现了许多不同的意见,最突出的是STATICFILES_DIRS,但这对我不起作用.
如何设置它以便在我的开发环境中我可以看到静态文件,当我将文件上传到服务器时,我不需要对生产环境进行任何更改即可正常工作.
编辑 - 我的urls.py文件:
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
import newsflashes
import settings
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('newsflashes.urls')),
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Run Code Online (Sandbox Code Playgroud)
编辑 - 文件结构:
我有两个目录,静态和动态.内部静态是静态文件,动态目录中是django应用程序.
编辑设置:
我的相关设置如下
STATIC_ROOT = os.path.join(BASE_DIR, '..', 'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
Run Code Online (Sandbox Code Playgroud) 我使用"git push heroku master"将一个django应用程序部署到了heroku,它工作得很好.
然后我使用"heroku create second-app -r staging"在同一个git上创建了第二个应用程序
并推送使用:git push staging master
当我打开第二个应用程序时,没有任何静态文件被拾取或加载(即没有css,js或图像工作)
这非常令人困惑 - 请帮忙!
我的设置文件如下
import os
import platform
import dj_database_url
DEBUG = True
TEMPLATE_DEBUG = DEBUG
# This should work for any deployment
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..'))
ADMINS = (
('me', 'me@gmailcom'),
)
MANAGERS = ADMINS
# LOCAL SETTINGS
if platform.system() in ['Windows', 'Darwin']:
#EV = 'LOCAL'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': BASE_DIR + …Run Code Online (Sandbox Code Playgroud) 我正在尝试在heroku上部署我的django应用程序.所有静态文件都由whitenoise成功提供并迁移.但是如何ImageField在生产期间获取用于上传的媒体文件.
我的 settings.py
STATIC_URL = '/static/'
STATIC_ROOT = 'C:/Users/Sak/mpro/feat/static/'
STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
Run Code Online (Sandbox Code Playgroud)
wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mpro.settings")
application = get_wsgi_application()
try:
from django.core.wsgi import get_wsgi_application
from whitenoise.django import DjangoWhiteNoise
application = get_wsgi_application()
application = DjangoWhiteNoise(application)
from dj_static import Cling
application = Cling(get_wsgi_application())
except:
pass
Run Code Online (Sandbox Code Playgroud)
urls.py
urlpatterns = [
url(r'^', include('feat.urls', namespace="feat")),
url(r'^admin/', include(admin.site.urls)),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
我的所有媒体文件都上传到base_dir/media/media,当whitenoise收集静态文件时,它只收集文件STATIC_ROOT,所以如何部署我的媒体文件.当我运行时,heroku …
我想从我的node_modules目录加载我的静态css文件(例如,Bootstrap),如下所示:
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'bootstrap/dist/css/bootstrap.min.css' %}" />
Run Code Online (Sandbox Code Playgroud)
当我.../node_modules/进入我的STATICFILES_DIRS设置时,这是有效的.但是,它还为我的/static/文件夹添加了绝对大量的文件- 主要devDependencies是我不需要访问前端.
通过npm包含某些静态资产的最佳做法是什么,但不包括node_modules我/static/文件夹中的所有内容?
或者,包含这么多无关文件是否可以,这是最好的解决方案?
有很多文章描述了使用whitenoise而不是其他配置来提供静态文件的优点.但有关它的缺点的信息很难找到
使用whitenoise提供静态文件有什么缺点或缺点吗?
如果问题是广泛的,我现在使用NGINX来提供我的静态文件(我也使用它和gunicorn来提供我的Django应用程序),我发现它也很容易配置它
Django版本是1.4.我读过了official document,并用谷歌搜索了我的问题.
首先我按照官方文档管理静态文件添加到settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.core.context_processors.static',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
)
Run Code Online (Sandbox Code Playgroud)
在我的模板中:
<link href="{{ STATIC_URL }}css/main.css" ...>
Run Code Online (Sandbox Code Playgroud)
但是,在我的broswer是:
<link href="css/main.css" ...> (Just render `STATIC_URL` as empty)
Run Code Online (Sandbox Code Playgroud)
我的设置是:
STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)
在我的 views
def register(request):
...
return render_to_response('register.html', {'errors':errors})
Run Code Online (Sandbox Code Playgroud) 我对Django 'staticfiles'应用程序中STATIC_URL和STATIC_ROOT之间的区别感到困惑.
我相信我理解STATIC_ROOT它是什么:它本质上是服务器上的位置,staticfiles' collectstatic命令将放置从django项目收集的静态文件.该collectstatic命令将搜索您在STATIC_FINDERS设置中指定的位置.
但是,究竟做了STATIC_URL什么呢?这应该是什么?显然,它旨在设置一些用户可以访问静态文件的东西.但这与它的关系是什么STATIC_ROOT?
为什么STATIC_URL简单的默认值/static/?是否STATIC_URL必须能够参考STATIC_ROOT?
django中有没有办法不需要{% load static %}每个模板的顶部?
此问题表明您可以将常用加载标记分解为设置,但在这种情况下不提供您需要的详细信息.
django ×10
python ×4
heroku ×2
static-files ×2
django-media ×1
docker ×1
nginx ×1
web ×1
whitenoise ×1