我正在创建一个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) 我正在使用Heroku部署NodeJs应用程序.除了提供静态文件的小问题外,一切正常.
我有以下配置
app.use(express.static(__dirname + '/htdocs'));
Run Code Online (Sandbox Code Playgroud)
它工作正常,除非我尝试提供位于子文件夹中的静态文件.
www.example.com/bar.js //这将提供文件/htdocs/bar.js
www.example.com/foo/bar.js //找不到文件/htdocs/foo/bar.js
我忘了说在我的本地环境中一切正常,可能是heroku的东西,但我找不到原因.以前有人遇到过这个问题吗?解决方案?
谢谢!
我正在使用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) (我是.Net和微软世界的新手,来自Java和Tomcat背景,所以请记住这一点.)
我正在使用Visual Studio 2013,C#,.Net 4.5,MVC 5和EF 6开发我的第一个.Net应用程序.这是一个相当简单的基于Web的应用程序,使用Windows身份验证和Active Directory组授权公平地执行SQL Server数据库中表的基本CRUD操作.
我还没有部署应用程序.我还在开发它并在我的PC上运行(运行Windows 7).当我按下Ctrl-F5在Internet Explorer或Google Chrome中测试应用程序时,一切正常.
但是,如果我告诉Visual Studio在Firefox中访问它,它会显示没有任何CSS或JavaScript 的页面.我可以单击应用程序中的链接并导航到各个页面,这些页面都可以正常工作.它们只显示没有任何CSS或工作JavaScript.当我手动尝试查看其中一个CSS或JavaScript文件时,我收到内部服务器错误(HTTP错误500).检查日志文件会显示页面尝试加载的每个CSS和JavaScript文件的状态代码500.
我很神秘,因为它可以从Internet Explorer和Chrome中正常工作.如何使用不同的Web浏览器导致此内部服务器错误?
我发布了一些代码,但此时我不知道有什么用处.(我可以显示IIS Express正在记录哪些附加信息,如果有的话,但我不知道在哪里可以找到它,除了显示状态代码500的行.)
在开发的早期阶段,我意识到当我希望它被命名为"Version"(大写)时,我已经命名了一些数据库字段"version".我在该字符串的整个解决方案中进行了全局查找/替换,而不是对该字段进行重命名.可能有一些重要的事情被这个过程所困扰,但我已经对"版本"(以及"版本")进行了全局查找,并且没有找到任何值得注意的内容.
如果我绝对必须,我可能只是从头开始重新创建项目,并希望我不会将同样的问题(或新问题)复制/粘贴到新项目中,但我希望有人能来有一些比较容易尝试的东西.
这是Views/Shared/_Layout.cshtml的开头:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - Experiment 626</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
</head>
Run Code Online (Sandbox Code Playgroud)
这是App_Start\BundleConfig.cs:
using System.Web;
using System.Web.Optimization;
namespace Experiment626
{
public class BundleConfig
{
// For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.validate.min.js",
"~/Scripts/jquery.validate.unobtrusive.min.js"));
// Use the …Run Code Online (Sandbox Code Playgroud) 我想使用Image.getSize(https://facebook.github.io/react-native/docs/image.html)来获取我的图像的大小,但第一个参数要求图像源在URI中,但我可以不要将URI与静态文件一起使用,我只能使用Require.
因此,是否可以在静态文件上使用Image.getSize或者我必须找到另一种方法?
我正在使用Django上传/显示图像.
该网站部署在Heroku上.
按照本教程,我能够成功上传图像.
但是,图像未显示在模板中.
然后我了解到我的urls.py应该在最后有这一行:
+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
我将此添加到我的urls.py的末尾,但现在我收到此错误:
ImproperlyConfigured at / Empty static prefix not permitted
Run Code Online (Sandbox Code Playgroud)
我在settings.py中有MEDIA_URL和MEDIA_ROOT,两者都不是空的.
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
为什么会发生此错误以及如何解决?
以下是我认为urls.py的相关部分:
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
import notifications
admin.autodiscover()
urlpatterns = patterns('',
....urls......
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud) 首先让我解释一下背景.我正在研究一个项目,该项目试图将使用通过IIS上托管的OWIN配置的Web API的后端服务器结合起来,但未来可能还有其他OWIN支持的主机 - 使用AngularJS的前端.
AngularJS前端完全是静态内容.我完全避免服务器端技术,如MVC/Razor,WebForms,Bundles,任何与前端及其使用的资产有关的技术,而是推迟使用Node.js,Grunt/Gulp等最新最好的技术.处理CSS编译,捆绑,缩小等等.由于我不会进入这里的原因,我将前端和服务器项目保存在同一个项目中的不同位置(而不是直接将它们全部放在Host项目中(参见raw下图).
MyProject.sln
server
MyProject.Host
MyProject.Host.csproj
Startup.cs
(etc.)
frontend
MyProjectApp
app.js
index.html
MyProjectApp.njproj
(etc.)
Run Code Online (Sandbox Code Playgroud)
因此就前端而言,我需要做的就是让我的主机服务我的静态内容.在Express.js中,这是微不足道的.使用OWIN,我能够使用Microsoft.Owin.StaticFiles中间件轻松地完成此任务,并且它运行良好(非常灵活).
这是我的OwinStartup配置:
string dir = AppDomain.CurrentDomain.RelativeSearchPath; // get executing path
string contentPath = Path.GetFullPath(Path.Combine(dir, @"../../../frontend/MyProjectApp")); // resolve nearby frontend project directory
app.UseFileServer(new FileServerOptions
{
EnableDefaultFiles = true,
FileSystem = new PhysicalFileSystem(contentPath),
RequestPath = new PathString(string.Empty) // starts at the root of the host
});
// ensure the above occur before map handler to prevent native static content handler …Run Code Online (Sandbox Code Playgroud) django中有没有办法不需要{% load static %}每个模板的顶部?
此问题表明您可以将常用加载标记分解为设置,但在这种情况下不提供您需要的详细信息.
https://github.com/koajs/static上的文档以及我尝试koa-static的个人经验让我相信你只能从应用程序的根URL提供文件.
例如:
app.use(serve('./some/dir/'));
Run Code Online (Sandbox Code Playgroud)
鉴于以上使用serve,访问文件的URL ./some/dir/something.txt将是localhost:3000/something.txt.似乎没有办法配置我的应用程序,以便提供相同的文件(以及同一目录中的所有其他文件)localhost:3000/static/something.txt.
我是Node和Koa的新手,所以我刚刚开始深入研究这个问题,我可能会错过一些非常明显的东西.
app.use(route.get('/static/*'), serve(__dirname + '/some/dir'));
Run Code Online (Sandbox Code Playgroud)
但在要求时,/static/something.txt我遇到了以下情况:
TypeError: Cannot read property 'apply' of undefined
at Object.<anonymous> (/Users/me/example/src/node_modules/koa-route/index.js:34:18)
at GeneratorFunctionPrototype.next (native)
at onFulfilled (/Users/me/example/src/node_modules/koa/node_modules/co/index.js:64:19)
at /Users/me/example/src/node_modules/koa/node_modules/co/index.js:53:5
at Object.co (/Users/me/example/src/node_modules/koa/node_modules/co/index.js:49:10)
at Object.toPromise (/Users/me/example/src/node_modules/koa/node_modules/co/index.js:117:63)
at next (/Users/me/example/src/node_modules/koa/node_modules/co/index.js:98:29)
at onFulfilled (/Users/me/example/src/node_modules/koa/node_modules/co/index.js:68:7)
at /Users/me/example/src/node_modules/koa/node_modules/co/index.js:53:5
at Object.co (/Users/me/example/src/node_modules/koa/node_modules/co/index.js:49:10)
Run Code Online (Sandbox Code Playgroud) 我想提供/dist位于 Nest 项目外部文件夹中的静态 HTML 文件。index.html已成功加载但无法加载任何 JS 文件(404错误)。
我有一个 Node/Express.js 项目,它使用
app.use('/', express.static('../client/dist'))
Run Code Online (Sandbox Code Playgroud)
它工作得很好。
然而,在 Nest 项目中,
app.setBaseViewsDir(join(__dirname, '../../client/dist'))
Run Code Online (Sandbox Code Playgroud)
不做的伎俩。
在AppController我试过
import { Response } from 'express';
@Get()
get(@Res() res: Response) {
res.sendFile('index.html', {
root: '../client/dist',
});
}
Run Code Online (Sandbox Code Playgroud)
但没有运气。
如前所述,index.html已成功加载。所以问题不是走错路。问题也不是 src-paths 错误,index.html因为在 Express 项目中使用了完全相同的文件。
/dist
|-index.html
|-main.js
|-etc.
Run Code Online (Sandbox Code Playgroud)
在 index.html 中:
<script type="text/javascript" src="main.js"></script>
Run Code Online (Sandbox Code Playgroud)
当我将 dist 文件夹放入 Nest 项目(并调整路径)时,它也不起作用。
我现在使用 express 模块:
import * as express from 'express'; …Run Code Online (Sandbox Code Playgroud) static-files ×10
django ×4
node.js ×3
express ×2
heroku ×2
python ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
debugging ×1
django-urls ×1
firefox ×1
iis ×1
image ×1
javascript ×1
koa ×1
nestjs ×1
owin ×1
react-native ×1