我的问题是使用静态文件(img,样式)。我的代码运行正常,静态文件没有错误,并且在运行服务器时出现了图像,但是当我使(debug = False)图像和样式消失时,我在Linux服务器ubuntu上运行了代码。我使静态文件显示为(debug = false)?
in settings.py that is my code
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'music/templates/'),
)
在我的html文件中,图像标签就像这样:
<img src="{% static 'music/login.jpg' %}" width="300" height="300">
答案 0 :(得分:1)
正如乔恩·克莱门茨(Jon Clements)所说,如果debug=False
,则Django应用staticfiles
被禁用。通常在生产环境中使用dedicated web server
(不运行Django的服务器来提供静态文件)。因此,为解决您的问题,应设置一个额外的服务器来提供静态文件。
一些高级步骤:
转到django设置文件并添加一个STATIC_ROOT
,它将是Django将放置静态文件的目录;
为Django运行python manage.py collecstatic
,以收集所有静态文件并将它们放置在STATIC_ROOT
目录中;
当请求在URL中包含您的STATIC_URL
时,将在此目录中提供文件(这些请求通常将包含/static/
或其他内容)。例如,这可以使用Nginx服务器或Apache服务器完成,如Django文档所述:
https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/modwsgi/#serving-files
就Nginx配置而言,一个简短的代码段就可以说明这一点,它可能类似于:
server {
listen 80;
# hey Nginx, once you see something like /static/ in the url
# try to grab the file that is under the alias directory and
# return to the user
location /static/myapp/ {
alias /var/www/myproject/static/myproject/myapp/;
access_log true;
add_header Cache-Control "max-age=120";
}
}
总结一下:
Django的staticfiles
应用非常适合本地开发,但并不真正适合生产应用。
因此,提供静态文件通常应由专用且独立的服务器(例如Nginx或Apache服务器)完成,这需要一些额外的配置来设置这些服务器。