所以我正在编写一个分为几个部分的网站,这些网站本身分为几个小节.在我的设置中,当用户点击指向某个部分的链接时(比如说'/ home'),它们会被重定向到其中一个子部分(例如'/ home/cover').此外,当用户转到页面根目录时,它们会被重定向到其中一个部分(在我的情况下为"/ home").有了这样的设置,当有人去根时发生的事情是,他们首先被重定向到'/ home',然后从那里重定向到'/ home/cover'.这些重定向是这样实现的:
主urls.py:
from django.conf.urls import patterns, include, url
from django.views.generic.base import RedirectView
urlpatterns = patterns('',
url(r'^$', RedirectView.as_view(url='/home')),
url(r'^home/', include('components.home.urls', namespace='components.home')),
...
)
Run Code Online (Sandbox Code Playgroud)
组件/家/ urls.py:
from django.conf.urls import patterns, include, url
from django.views.generic.base import RedirectView
from components.home import views
urlpatterns = patterns('',
url(r'^$', RedirectView.as_view(url='cover')),
url(r'^cover$', views.cover, name='home_cover'),
...
)
Run Code Online (Sandbox Code Playgroud)
在实践中,这似乎工作正常:我可以导航我的网站,所有重定向都做他们应该做的.但是,我无法弄清楚如何为它们实现单元测试,特别是对于根重定向.
我最初设计的测试如下:
def test_root_url_redirects_to_home_url(self):
response = self.client.get('/')
self.assertRedirects(response, '/home', status_code=301)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我遇到了错误:
"AssertionError: 301 != 200 : Couldn't retrieve redirection page '/home':
response code was 301 (expected 200)." …
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用 Node.js,所以我正在构建非常简单的应用程序以练习基础知识。我试图让一些类似 Django 的模板继承工作,但我对如何去做有点不知所措。
我知道库“express-handlebars”包括布局的概念,我认为这可能是最好的方法,但乍一看我不知道它是否允许不止一步的继承,或者使用它来替换不同的块(我看到了一种通用布局,其中插入了其他模板来代替 {{{body}}} 标记,尽管很可能还有更多技巧)。
所以,我的问题是:如何实现多层模板继承(还有,孩子将内容插入不同的单独块,而不是单个块)?我正在使用 Node.js、Express 和 handlebars,但如果后两者无法实现,我不介意尝试其他框架或模板语言。
谢谢!
编辑:
我的意思的伪代码示例:
首先,我们可以有一个通用的外部模板:
<html>
<head></head>
<body>
<h1> Main Title </h1>
<h2> {{section name block}} </h2>
<h3> {{subsection name block}} </h3>
{{content block}}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后在它下面的另一个(中间模板),替换一些外部块(并可能添加其他块):
{{inheriting from outer template}}
{{section name block}} Section Three {{/block}}
Run Code Online (Sandbox Code Playgroud)
最后是一个内部的,这将是从 javascript 代码调用的那个:
{{inheriting from middle template}}
{{subsection name block}} Subsection Two {{/block}}
{{content block}}
<p>This is the content of Section Three, Subsection Two.</p>
{{/block}}
Run Code Online (Sandbox Code Playgroud)
处理内部模板时的结果将是:
<html>
<head></head>
<body>
<h1> Main Title </h1> …
Run Code Online (Sandbox Code Playgroud) 我遇到了axios似乎不随我的请求发送自定义标头的问题。
我正在这样使用它:
axios({
method: 'get',
url: 'www.my-url.com',
headers: { 'Custom-Header': 'my-custom-value' }
})
Run Code Online (Sandbox Code Playgroud)
但是,查看发送到服务器的实际请求,自定义标头似乎不在任何地方。
REQUEST HEADERS:
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
Access-Control-Request-Headers: custom-header
Access-Control-Request-Method: GET
Connection: keep-alive
Host: my-url.com
Run Code Online (Sandbox Code Playgroud)
我怀疑这可能是CORS问题(响应标头不包括Access-Control-Allow-Headers中的Custom-Header),但是在与API所有者联系之前,我想确定一下。
我正在尝试使用来自父级的 postMessage 命令来控制 YouTube iframe,但它似乎不起作用。
\n\n由于多种原因,我没有使用 YouTube API,只是使用带有 YouTube 嵌入视频的普通 iframe。
\n\n<iframe id="video-player" :src="\'https://www.youtube.com/embed/\' + code + \'?autoplay=1\'"\n seamless sandbox="allow-scripts allow-same-origin allow-presentation"></iframe>\n
Run Code Online (Sandbox Code Playgroud)\n\n我尝试发送命令的方式是:
\n\nvar iframe = document.getElementById(\'video-player\');\niframe.contentWindow.postMessage(JSON.stringify(\n { event: \'command\', func: \'pauseVideo\' }), \'https://www.youtube.com\');\n
Run Code Online (Sandbox Code Playgroud)\n\n看来 iframe 已被正确选择,但我不确定是否正在发送 postMessage 命令,因为视频会忽略它们。
\n\n\xc2\xbf我做错了什么?
\njavascript ×3
axios ×1
cors ×1
django ×1
express ×1
http-headers ×1
iframe ×1
inheritance ×1
node.js ×1
postmessage ×1
unit-testing ×1
vue.js ×1
youtube ×1