我是Django的新手,我很确定我已经阅读或听说过这样做的方法,但我无法在任何地方找到它.
我不想将渲染的输出从模板发送到浏览器,而是创建一个html文件,然后可以在不需要每次都进行渲染过程的情况下进行提供.我正在开发一个独立于我们主网站服务器的系统,我需要定期为我们的用户提供我的数据快照,而无需他们访问开发系统.
我的直觉说我应该能够以某种方式将响应重定向到文件,但我没有在文档或其他帖子中看到它.
我还没想出如何用纯HTML代码和/或HTML + JavaScript + CSS呈现网站.
我试着加载一个HTML文件,只是说:Hello World.
我知道我也可以用Django做到这一点,但后来我想用CSS + JavaScript + HTML显示我的网站.
在视图文件中,我运行此代码:
# Create your views here.
from django.http import HttpResponse
from django.template import Context, loader
def index(request):
    template = loader.get_template("app/index.html")
    return HttpResponse(template.render)
但网站显示的唯一内容是:
>
我创建了一个App Engine应用程序.到目前为止,我只有几个HTML文件可供使用.如果有人访问http://example.appengine.com/,我该怎么做才能让App Engine提供index.html文件?
目前,我的app.yaml文件如下所示:
application: appname
version: 1
runtime: python
api_version: 1
handlers:
- url: /
  static_dir: static_files
我正在尝试使用由 npm run build 和 react-router 生成的静态 index.html 文件。tl;博士是; 我不想要客户端服务器,我希望通过打开位于构建文件夹中的 index.html 文件来加载应用程序,并且仍然让 BrowserRouter 能够在组件之间进行路由。目前,如果我在路由路径中排除了 'exact' 属性,页面将加载 'home' 组件,这意味着它知道它在某处,我只是不知道如何配置路由器来知道' C:/Users/Myself/Project/app/build/index.html' 等于 '/' 的路径,然后路由到每个组件。如果包含确切的道具,它只会加载标准的 404 组件。我应该如何配置 BrouserRouter 基本名称和/或 package.json“主页”
我不想做的事情: - 为构建文件夹提供服务。- 配置 webpack - 可以从“ http://localhost:XXXX ”访问应用程序- 更改为使用 HashRouter(我想访问 props.history.push)
在我看来,如果应用程序可以在不指定确切的情况下显示“home”组件,则意味着它可以在某些情况下访问它,而我只是没有指定正确的索引路径,即它在某个地方像 ../project/build/index.html/somewhere
我已经将 package.json 配置为具有 "homepage": ".",并指定了 BrowserRouter basename={'/build'}
我的浏览器路由器:
<BrowserRouter basename={'/build'}>
   <Routes />
</BrowserRouter>
我的 routes.js 文件:
const Routes = (props) => {
  return (
    <div>
      <Switch>
        <Route path={routes.HOME} component={Home} />
        <Route render={(props) => <div>404 - Not Found</div>} />
      </Switch> …我们正在关闭Conversations Network(包括IT Conversations播客).计划是在Internet Archive上呈现我们网站的静态HTML版本,以便永久托管.
从目前从PHP动态生成的大约5,000个动态页面生成静态HTML的最简单方法是什么?
我知道我们可以调整代码来缓存PHP输出,将其写入文件,然后遍历站点地图以生成每个页面.但我想知道是否有任何我们应该考虑的选择.用于执行此操作并按原样刮取HTML的任何工具?(Acrobat Pro以外的其他东西?)
不幸的是,我们也有相当数量的Ajax调用,这将使这更加困难.我想我们必须首先取消Ajax.
我使用HTTP连接器从一个独立的Tomcat 7.0.35服务器的单个war文件中提供一些静态HTML文件和一个servlet.
我想通过设置HTTP响应头来指定所有静态HTML文件的字符集Content-Type=text/html;charset=UTF-8.
Tomcat默认提供HTML文件Content-Type=text/html(没有字符集部分).
我按照以下说明操作:
http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q8
但标题仍然包含Content-Type=text/html没有;charset=UTF-8
我的web.xml在下面转载.请注意,我试图改变url-pattern到/*,*,/index.html,和index.html,但这些工作的.
仅供参考,Tomcat正确地提供了/index.html文件(缺少除外;charset=UTF-8).将/ servlet的的getData也工作正常,我已经成功地建立了servlet的响应Content-Type=text/html;charset=UTF-8使用response.setContentType("application/json;charset=UTF-8");.
谢谢你的帮助.
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <filter>
        <filter-name>CharacterEncoding</filter-name>
        <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncoding</filter-name>
        <url-pattern>/index.html</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>DataServlet</servlet-name>
        <servlet-class>com.rcg.data.web.DataServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DataServlet</servlet-name>
        <url-pattern>/getData</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
</web-app>
我不能将服务的defualt.htm页面的头部内容包含在"工作"中.dom中的html加载,只有CSS和JS文件失败.还有更好的选择吗?我喜欢将解决方案保留在NodeJS中,但也可以打开socket.io并表达.
谢谢,下面是我正在使用的.
NodeJS为页面服务
var http = require('http'),
fs = require('fs');
fs.readFile(__dirname+'/default.htm', function (err, html) {
    if (err) {
        throw err; 
    }       
    http.createServer(function(request, response) {  
        response.writeHeader(200, {"Content-Type": "text/html"});  
        response.write(html);  
        response.end();  
    }).listen(port.number);
});
Default.html页面
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8" />
    <title></title>
    <link rel="stylesheet" href="objects/css/site.css" type="text/css" />
    <script src="objects/js/jquery.min.js" type="text/javascript"></script>
    <script src="objects/js/site.min.js" type="text/javascript"></script>
</head>
<body></body>    
</html>
http://blog.urbantastic.com/post/81336210/tech-tuesday-the-fiddly-bits
来自Urbantastic的Heath写了他的HTML生成系统:
Urbantastic中的所有HTML都是完全静态的.所有动态数据都以JSON格式通过AJAX发送,然后使用Javascript与HTML结合.换句话说,Urbantastic的服务器软件专门生产和使用JSON.HTML,CSS,Javascript和图像都通过不同的服务(vanilla Nginx服务器)发送.
我认为这是一个有趣的模型,因为它将表示与数据分开.我不是建筑专家,但似乎效率和稳定性会有所提高.
但是,以下关注我:
[主观] Clojure非常强大; Javascript不是.在为另一个目标创建的语言上编写所有内容生成将产生一些痛苦(想象一下在CSS中编写Javascript类型的代码).除非他有一个用于生成Javascript的宏系统,否则Heath可能需要在JavaScript和Clojure之间不断切换.他还会有很多JS代码; 可能比Clojure要多得多.在功能,快速开发,简洁以及我们在切换到基于LISP的语言时所考虑的所有事情方面,这可能不太好.
[性能]我不确定这一点,但渲染用户机器上的所有内容可能会滞后.
[可访问性]如果您已禁用JS,则根本无法使用站点.
[accessibility#2]我怀疑用JavaScript填充大量动态数据会产生跨浏览器问题.
谁有人评论?我有兴趣阅读你对这种架构的看法.
参考文献:
javascript json separation-of-concerns web-architecture static-html
我创建了一个简单的HttpModule,它在将响应发送到客户端之前从响应中删除空格.这适用于IIS7.0上的aspx页面,但如果我创建一个静态html页面并调用它,HttpModule不会启动(我知道的方式是因为源包含空格,否则本应删除).显然有些东西我做得不对,但不知道是什么.
我的网站位于.NET 4.0和.NET 4.0的应用程序池中ManagedPipelineMode = Integrated.
我已将模块添加为ManagedModule,并引用GAC的强名称密钥程序集.
谢谢
编辑 - 这是web.config中的system.webserver部分
<system.webServer>
  ...
  <modules runAllManagedModulesForAllRequests="true">
    <add name="RemoveWhitespaceHttpModule" 
         type="HttpModules.Modules.RemoveWhitespaceHttpModule, HttpModules, 
           Version=1.0.0.0, Culture=neutral, PublicKeyToken=8a83u4bi47o9fo0d" 
           preCondition="" />
  </modules>
  <defaultDocument>
    <files>
      <add value="TestForm.aspx" />
    </files>
  </defaultDocument>
</system.webServer>
编辑 - 修正了它.对于任何感兴趣的人,这是我的模块检查响应然后决定是否继续删除空格的方式
if (contentType.Equals("text/html") 
  && httpContext.Response.StatusCode == 200 
  && httpContext.CurrentHandler != null)
{ ... }
问题出在httpContext.CurrentHandler!= null之上的第三个条件.当为静态.html页面调用此模块时,currentHandler为null,因此代码永远不会进入操作html.我已经删除了这第三个条件,它现在有效.谢谢大家的回答
我正在尝试使用 netlify 来托管静态站点。我正在使用该站点构建站点,wget -mk  http://hostname/因此我获得了大量静态文件,并重写了链接。
我想将他们推到 netlify 并让该网站托管。
以 .html 结尾的页面被视为 html 文件并正确显示。
具有“漂亮网址”之类的页面/about被视为文本文件,并显示 HTML 标记。
除非我添加重写,否则我无法真正重命名所有这些文件,因为我想保留指向该站点的外部链接。
我尝试设置一个_headers文件,但不清楚操作的顺序是什么。这是一个示例_headers文件:
/*.css
  Content-Type: text/css
/*.js
  Content-Type: text/javascript
/*.jpg
  Content-Type: image/jpg
/*.jpeg
  Content-Type: image/jpg
/*.png
  Content-Type: image/png
/*.gif
  Content-Type: image/gif
/*
  Content-Type: text/html
这将所有内容视为 text/html。我可以删除最后一行,但是漂亮的文件会再次被视为文本。
是迭代所有文件并使用完整路径将它们标记为 html 的唯一解决方案,这将使_headers文件看起来像这样:
/about
  Content-Type: text/html
/contact
  Content-Type: text/html
...
我查看了 netlify 文档并用谷歌搜索,但找不到任何有用的东西。
static-html ×10
django ×2
javascript ×2
asp.net ×1
c#-4.0 ×1
caching ×1
content-type ×1
html ×1
iis-7 ×1
json ×1
netlify ×1
node.js ×1
package.json ×1
php ×1
python ×1
react-router ×1
reactjs ×1
readfile ×1
render ×1
routing ×1
static-site ×1
tomcat ×1
war ×1
web-scraping ×1