小编Qll*_*lli的帖子

Go和Gorilla Mux NotFoundHandler无法正常工作

我只是不能让这个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

那么我在这里做错了什么?

go mux gorilla

11
推荐指数
2
解决办法
1万
查看次数

用jwt-go解析令牌

谁能告诉我为什么以下(来自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示例中的代码,但总是遇到同样的错误.

go jwt

6
推荐指数
2
解决办法
4604
查看次数

Angular和UI-Router,如何设置动态templateUrl

我如何使用从我的数据库中获取的名称作为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")没有给我任何东西(查询本身工作得很好).

查询是否只需要太长时间,因此它没有为路由器做好准备或者在这里发生了什么?

我做错了,我该怎么办呢?

angularjs angular-ui-router

6
推荐指数
1
解决办法
1万
查看次数

Django - fk_name 是什么?

我正在寻找一些关于如何让我的 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)

django mptt

5
推荐指数
1
解决办法
5945
查看次数

阻止使用AngularJs和Node.js/Express直接访问文件

使用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文件.仍然没有任何东西可以看,因为内容是单独加载的,用户需要为此登录,但我仍然希望以某种方式阻止访问此文件.

routing node.js express angularjs

5
推荐指数
1
解决办法
4160
查看次数

使用预编译的车把模板与Marionette

我正在使用带有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)

requirejs handlebars.js marionette

3
推荐指数
1
解决办法
6599
查看次数