我正在尝试通过Django管理员上传图像,然后在前端的页面中或通过URL查看该图像.
请注意,这都在我的本地计算机上.
我的设置如下:
MEDIA_ROOT = '/home/dan/mysite/media/'
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
我已将upload_to参数设置为'images',并且文件已正确上传到目录:
'/home/dan/mysite/media/images/myimage.png'
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试访问以下URL的图像时:
http://127.0.0.1:8000/media/images/myimage.png
Run Code Online (Sandbox Code Playgroud)
我收到404错误.
我是否需要为上传的媒体设置特定的URLconf模式?
任何建议表示赞赏
谢谢.
我无法得到我的静态文件.我尝试了各种设置和目录配置等等,但它们只是变成404s.我安装了debug_toolbar,因此知道STATIC_URL正在到达我的请求上下文.
目录结构显示/静态(我还将目录放在饭菜app文件夹和用户内部,只是为了试一试.
/mealmate
/mealmate
/meals
/static
/css
/bootstrap.min.css
/templates
/users
Run Code Online (Sandbox Code Playgroud)
Settings.py(一些重要的设置,虽然我已尝试过各种其他设置):
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media/')
STATIC_URL = '/static/'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
)
WSGI_APPLICATION = 'mealmate.wsgi.application'
Run Code Online (Sandbox Code Playgroud)
在base.html中呈现
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?谢谢
我正在创建一个Django项目.我刚刚尝试将该项目从调试中删除,DEBUG = False并且出于某种原因,我的所有静态文件都没有显示出来.它们的错误代码为500.我该如何解决这个问题?
一些settings.py:
DEBUG = True
TEMPLATE_DEBUG = DEBUG
...
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
Run Code Online (Sandbox Code Playgroud) 大家好我无法解决这个问题:如果我将DEBUG变为False,我就无法运行manage.py runserver:
CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False
Run Code Online (Sandbox Code Playgroud)
然后,假设我向ALLOWED_HOSTS添加了一些内容:
ALLOWED_HOSTS = ['*']
or
ALLOWED_HOSTS = ['localhost']
or
ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
Run Code Online (Sandbox Code Playgroud)
现在,我可以做'manage.py runserver',但静态文件不起作用.奇怪的.
如果我将DEBUG转为True,那么它将ALLOWED_HOSTS设置为nothing,localhost或*.所以,我猜这个问题与DEBUG有关.我不明白.
如果urls.py中不存在任何类型的url模式到创建的页面"404.html"页面,而不是由django显示错误,如何将其重定向到.
现在,我正在尝试按照本教程:
http://honza.ca/2011/05/deploying-django-with-nginx-and-gunicorn
模板站点正确加载,但图像不加载.这是我的应用程序的config.py文件的一部分:
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/" …Run Code Online (Sandbox Code Playgroud) 这可能是一个愚蠢的问题并且有一个明显的答案,但我正在测试我的404和500错误处理程序,这意味着我必须将调试切换为False.我去了Django管理页面,注意到没有提供静态文件.
我知道它们应该通过Apache路由,因为通过Django服务静态文件是不安全的.但是,我不太明白为什么直接通过Django提供静态文件会带来安全风险?
所以,在我的项目中,我想添加一个自定义的404错误页面,所以我按照我在网上找到的内容,但似乎没有什么对我有用.
这就是我的文件:
settings.py
import os
# Django settings for HogwartsMail project.
PROJECT_PATH = os.path.realpath(os.path.dirname(__file__))
DEBUG = False
TEMPLATE_DEBUG = DEBUG
# Hosts/domain names that are valid for this site; required if DEBUG is False
# See https://docs.djangoproject.com/en/1.5/ref/settings/#allowed-hosts
ALLOWED_HOSTS = ["*"]
Run Code Online (Sandbox Code Playgroud)
urls.py
urlpatterns = patterns('',
...
)
handler404 = "HogwartsMail.views.error404"
Run Code Online (Sandbox Code Playgroud)
views.py
def error404(request):
return render(request,'404.html')
Run Code Online (Sandbox Code Playgroud)
每当我尝试输入一个随机网址时,我得到的服务器错误(500)并没有得到404错误.
正如我所说,我尝试了许多不同的方式,但没有一个真正适合我.
另外,我遇到的另一个问题是我加载的页面非常慢,并且它们没有打开样式或图像,所以我认为,当DEBUG = False我需要一切已经在线时.那是对的吗?
免责声明:我知道这里有很多404关于静态资源的问题django,但不幸的是它没有任何帮助:(
问题:正如标题中所述,我得到了404对graphiteweb应用中所有静态资源的响应.
以下是一些相关的配置部分:
app_settings.py:
INSTALLED_APPS = (
'graphite.metrics',
'graphite.render',
'graphite.browser',
'graphite.composer',
'graphite.account',
'graphite.dashboard',
'graphite.whitelist',
'graphite.events',
'graphite.url_shortener',
'django.contrib.auth',
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.staticfiles',
'tagging',
)
Run Code Online (Sandbox Code Playgroud)
settings.py:
# Defaults for these are set after local_settings is imported
STATIC_ROOT = ''
STATIC_URL = ''
...
## Load our local_settings
try:
from graphite.local_settings import * # noqa
except ImportError:
print >> sys.stderr, "Could not import graphite.local_settings, using defaults!"
...
STATICFILES_DIRS = (
join(WEBAPP_DIR, 'content'),
"/opt/graphite/webapp/content/", …Run Code Online (Sandbox Code Playgroud) 我目前有两种文件静态文件和媒体文件.静态文件包含我的css,js和其他静态内容.媒体文件包含用户上传的内容.静态文件夹就在媒体文件夹旁边.现在在我部署的计算机上.如果我设置DEBUG = False我的静态文件很好,但我的媒体内容永远不会显示.我收到一个404 not found错误.我的问题是当DEBUG = False时如何在生产环境中显示媒体内容.有了DEBUG = True,一切似乎都运行正常吗?我阅读了以下页面并尝试了这些内容.
1-Tried为静态媒体创建一个单独的文件夹,就像静态内容一样.
目前,我的静态内容由collectstatic命令管理.我在webfaction上使用apache.我有一个静态文件夹,static_content当我./manage.py collectstatic在静态文件夹中运行我的所有内容时被static_content调用复制到该文件夹.我尝试创建另一个名为的静态文件夹static_media.但是,当我运行./manage.py collectstatic我的media文件夹的内容被复制到,static_content而不是static_media它应该有.谁能告诉我为什么collectstatic命令没有粘贴内容static_media呢?
这就是我的配置
ALLOWED_HOSTS = [
"*",
'mywebsite.com',
'www.mywebsite.com.com',
]
STATIC_URL = 'http://mywebsite.com.com/static/'
STATIC_ROOT = '/home/admin/webapps/static_content'
STATICFILES_DIRS = (
'/home/admin/webapps/mainfolder/mainapp/static',
'/home/admin/webapps/mainfolder/mainapp/media',
)
PROJECT_PATH = os.path.join(BASE_DIR, 'static')
MEDIA_URL = 'http://mywebsite.com.com/media/'
MEDIA_ROOT = '/home/admin/webapps/static_media'
Run Code Online (Sandbox Code Playgroud)
这就是我的urls.py看起来像
admin.autodiscover()
urlpatterns = [
....
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
我是否正在使用正确的方法创建一个单独的文件夹来管理我的媒体内容,就像DEBUG = …