我只是不能让这个NotFoundHandler工作.我想在每个get请求上提供一个静态文件,只要它存在,否则请提供index.html.这是我目前简化的路由器:
func fooHandler() http.Handler {
fn := func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Foo"))
}
return http.HandlerFunc(fn)
}
func notFound(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "public/index.html")
}
func main() {
router = mux.NewRouter()
fs := http.FileServer(http.Dir("public"))
router.Handle("/foo", fooHandler())
router.PathPrefix("/").Handler(fs)
router.NotFoundHandler = http.HandlerFunc(notFound)
http.ListenAndServe(":3000", router)
}
Run Code Online (Sandbox Code Playgroud)
/ foo工作正常
/ file-that-exists工作正常
/ file-that-doesnt-exist 不起作用 - 我找不到404页面而不是index.html
那么我在这里做错了什么?
谁能告诉我为什么以下(来自https://github.com/dgrijalva/jwt-go)示例不起作用?
token, err := jwt.Parse(myToken, func(token *jwt.Token) ([]byte, error) {
return myLookupKey(token.Header["kid"])
})
if err == nil && token.Valid {
deliverGoodness("!")
} else {
deliverUtterRejection(":(")
}
Run Code Online (Sandbox Code Playgroud)
我得到一个错误,说"不能使用func文字(类型func(*jwt.Token)([] byte,error))作为jwt.Karse参数中的类型jwt.Keyfunc"
我试图使用几个不同的jwt-go示例中的代码,但总是遇到同样的错误.
我如何使用从我的数据库中获取的名称作为templateUrl文件名?
我试过这个:
$stateProvider.state('/', {
url: '/',
views: {
page: {
controller: 'HomeCtrl',
templateProvider: function($templateFactory, $rootScope) {
console.log("$rootScope.template")
return $templateFactory.fromUrl('/templates/' + $rootScope.template);
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
如果我的$ rootScope.template来自数据库查询,那似乎不起作用.不知道为什么,但它不起作用.
如果在我的控制器中我做$ rootScope.template ="whatever.html"一切正常,但如果我从数据库查询模板,根本没有任何事情发生.templateProvider中的console.log("$ rootScope.template")没有给我任何东西(查询本身工作得很好).
查询是否只需要太长时间,因此它没有为路由器做好准备或者在这里发生了什么?
我做错了,我该怎么办呢?
我正在寻找一些关于如何让我的 Django 项目管理员同时使用 treeadmin 拖放和 mptt 模型的帮助。
开箱即用,一切正常,但是当我在 admin.py 中尝试此操作时:
class ItemInline(TreeAdmin):
model = MenuItems
class MenuAdmin(admin.ModelAdmin):
model = Menu
inlines = (ItemInline, )
admin.site.register(Menu, MenuAdmin)
Run Code Online (Sandbox Code Playgroud)
我收到错误:类型对象“ItemInline”没有属性“fk_name”。
现在,这个 fk_name 到底是什么?如何将它添加到 ItemInLine 中?
这也是我的模型,以防它与任何事情有关:
class Menu(MPTTModel):
name = models.CharField(max_length = 100)
def __unicode__(self):
return self.name
class MenuItems(MPTTModel):
menu = models.ForeignKey(Menu)
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
target = models.ForeignKey(Pages,null=True, blank=True)
class MPTTMeta:
order_insertion_by = ['name']
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud) 使用Angular和Node.js/Express,是否有办法防止直接访问我的部分.html文件,同时仍然允许以下路由处理:
我的Angular路线如下所示:
$stateProvider.state('albums', {
url: '/albums',
templateUrl: '/public/albums',
controller: 'AlbumsCtrl'
});
Run Code Online (Sandbox Code Playgroud)
然后我的快递应用程序执行以下操作
app.get('/public/albums', function(req, res){
res.sendfile('views/partials/albums.html');
});
Run Code Online (Sandbox Code Playgroud)
这一切都正常,但输入"mysite.com/public/albums"可以访问部分.html文件.仍然没有任何东西可以看,因为内容是单独加载的,用户需要为此登录,但我仍然希望以某种方式阻止访问此文件.
我正在使用带有requirejs的Marionette,我也想使用预编译的把手模板.这是如何运作的?
这是我目前的设置:
require_main.js:
requirejs.config({
baseUrl: "/",
paths: {
'text': 'vendor/javascripts/text',
'backbone': "vendor/javascripts/backbone",
'backbone.wreqr': "vendor/javascripts/backbone.wreqr",
'backbone.babysitter': "vendor/javascripts/backbone.babysitter",
'jquery': "vendor/javascripts/jquery",
'jquery-ui': 'vendor/javascripts/jquery-ui',
'json2': "vendor/javascripts/json2",
'marionette': "vendor/javascripts/backbone.marionette",
'underscore': "vendor/javascripts/underscore",
'handlebars': "vendor/javascripts/handlebars"
},
shim: {
'underscore': {
exports: "_"
},
'backbone': {
deps: ["jquery", "underscore", "json2"],
exports: "Backbone"
},
'marionette': {
deps: ["backbone"],
exports: "Marionette"
},
'jquery-ui': ['jquery'],
'handlebars': {
exports: 'Handlebars'
}
}
});
require(["app"], function(MyApp){
MyApp.start();
});
Run Code Online (Sandbox Code Playgroud)
app.js:
define(['marionette', 'handlebars', 'text!compiled.handlebars'], function(Marionette, Handlebars, Template_one) {
var MyApp = new Marionette.Application();
MyApp.addRegions({
mainRegion: …Run Code Online (Sandbox Code Playgroud)