Openerp Odoo 8传递模型到URL控制器

Openerp Odoo 8传递模型到URL控制器,openerp,odoo-8,Openerp,Odoo 8,我正在创建重定向并将对象模型传递给参数,但这不起作用。代码如下: picking = http.request.env['stock.picking'].browse([2]) # get an object model test = '/test/picking/' + slug(picking) # prepare url with slug return http.local_redirect(test, {}) # redirect 下面是我的重定向路线 @http.route('/t

我正在创建重定向并将对象模型传递给参数,但这不起作用。代码如下:

picking = http.request.env['stock.picking'].browse([2]) # get an object model
test = '/test/picking/' + slug(picking) # prepare url with slug
return http.local_redirect(test, {}) # redirect
下面是我的重定向路线

@http.route('/test/picking/<model("stock.picking"):picking>', auth='user', methods=['GET', 'POST'], type='http')
def method_test(self, picking=None, **kw):
    print picking
    print "test"
您的路由正在侦听
/test/…
,但您正在重定向到
test/…

还要确保控制器向客户端发送响应。像这样的

return http.request.render('<your_addon>.<your_template_id>', data)
返回http.request.render('.',data)
您的路由正在侦听
/test/…
,但您正在重定向到
test/…

还要确保控制器向客户端发送响应。像这样的

return http.request.render('<your_addon>.<your_template_id>', data)
返回http.request.render('.',data)

我以前没有用过slug,但我决定帮你。 所以我读了一些源代码,并编写了自己的slug()工作代码

from openerp.addons.website.models.website import slug
# some code here
@http.route('/crmlead/create', type='http', auth="user", website=True)
def create_crm_lead(self, **kwargs):
    crm_lead = request.env['crm.lead'].sudo().create({
        # arguments
    })
    return request.redirect("/crmlead/detail/%s" % slug(crm_lead))

@http.route('/crmlead/detail/<model("crm.lead"):lead>', type='http', auth="public", website=True)
def show_details_crm_lead(self, lead, **kwargs):
    import pdb; pdb.set_trace()
    pass
从openerp.addons.website.models.website导入slug
#这里有一些代码
@http.route('/crmlead/create',type='http',auth='user',website=True)
def创建客户关系管理领导(自我,**kwargs):
crm_lead=request.env['crm.lead'].sudo().create({
#论据
})
返回请求。重定向(“/crmlead/detail/%s”%slug(crm_lead))
@http.route('/crmlead/detail/',type='http',auth=“public”,website=True)
def显示详细信息客户关系管理领导(自我、领导、**kwargs):
进口pdb;pdb.set_trace()
通过
在pdb中:

2016-12-22 10:10:06,333 11747 INFO dec_21_01 werkzeug: 127.0.0.1 - - [22/Dec/2016 10:10:06] "GET /crmlead/create HTTP/1.1" 302 -
> /home/user/Git/controllers/main.py(60)show_details_crm_lead()
-> pass
(Pdb) l
57          @http.route('/crmlead/detail/<model("crm.lead"):lead>', type='http', auth="public", website=True)
58          def show_details_crm_lead(self, lead, **kwargs):
59              import pdb; pdb.set_trace()
60  ->          pass
61      
62          @http.route('/web/signup', type='http', auth='public', website=True)
(Pdb) print lead
crm.lead(2,)
2016-12-22 10:10:06333 11747信息dec_21_01 werkzeug:127.0.0.1---[22/dec/2016 10:10:06]“GET/crmlead/create HTTP/1.1”302-
>/home/user/Git/controllers/main.py(60)show\u details\u crm\u lead()
->通过
(Pdb)l
57@http.route('/crmlead/detail/',type='http',auth=“public”,website=True)
58 def show_details_crm_lead(自我、领导、**kwargs):
59进口pdb;pdb.set_trace()
60->通过
61
62@http.route('/web/signup',type='http',auth='public',website=True)
(Pdb)打印铅
crm.lead(2,)
所以它就是这么简单

另外,我不知道你的代码不起作用的原因,但只要遵循我的代码就能帮你解决问题。
也许你正在使用不同的slug,我不知道,给我们看看你的进口产品吧

我以前没有用过slug,但我决定帮助你。 所以我读了一些源代码,并编写了自己的slug()工作代码

from openerp.addons.website.models.website import slug
# some code here
@http.route('/crmlead/create', type='http', auth="user", website=True)
def create_crm_lead(self, **kwargs):
    crm_lead = request.env['crm.lead'].sudo().create({
        # arguments
    })
    return request.redirect("/crmlead/detail/%s" % slug(crm_lead))

@http.route('/crmlead/detail/<model("crm.lead"):lead>', type='http', auth="public", website=True)
def show_details_crm_lead(self, lead, **kwargs):
    import pdb; pdb.set_trace()
    pass
从openerp.addons.website.models.website导入slug
#这里有一些代码
@http.route('/crmlead/create',type='http',auth='user',website=True)
def创建客户关系管理领导(自我,**kwargs):
crm_lead=request.env['crm.lead'].sudo().create({
#论据
})
返回请求。重定向(“/crmlead/detail/%s”%slug(crm_lead))
@http.route('/crmlead/detail/',type='http',auth=“public”,website=True)
def显示详细信息客户关系管理领导(自我、领导、**kwargs):
进口pdb;pdb.set_trace()
通过
在pdb中:

2016-12-22 10:10:06,333 11747 INFO dec_21_01 werkzeug: 127.0.0.1 - - [22/Dec/2016 10:10:06] "GET /crmlead/create HTTP/1.1" 302 -
> /home/user/Git/controllers/main.py(60)show_details_crm_lead()
-> pass
(Pdb) l
57          @http.route('/crmlead/detail/<model("crm.lead"):lead>', type='http', auth="public", website=True)
58          def show_details_crm_lead(self, lead, **kwargs):
59              import pdb; pdb.set_trace()
60  ->          pass
61      
62          @http.route('/web/signup', type='http', auth='public', website=True)
(Pdb) print lead
crm.lead(2,)
2016-12-22 10:10:06333 11747信息dec_21_01 werkzeug:127.0.0.1---[22/dec/2016 10:10:06]“GET/crmlead/create HTTP/1.1”302-
>/home/user/Git/controllers/main.py(60)show\u details\u crm\u lead()
->通过
(Pdb)l
57@http.route('/crmlead/detail/',type='http',auth=“public”,website=True)
58 def show_details_crm_lead(自我、领导、**kwargs):
59进口pdb;pdb.set_trace()
60->通过
61
62@http.route('/web/signup',type='http',auth='public',website=True)
(Pdb)打印铅
crm.lead(2,)
所以它就是这么简单

另外,我不知道你的代码不起作用的原因,但只要遵循我的代码就能帮你解决问题。
也许你使用的是不同的slug我不知道,给我们看看你的进口产品吧

嗨Philip,我把它改成了/test,还是给了我404不Philip,它没有进入控制器,我把断点放进去检查。嗨Philip,我试过静态路由“/test/picking/”,它成功了,我想问题只出在slug上。伙计,我对slug做了更多的阅读。我认为它真的应该像你一直尝试的那样工作。如果你找到答案,请告诉我。嗨,Philip,我把它改成了/test,仍然给了我404不Philip,它没有进入控制器,我把断点放在了检查中。嗨,Philip,我试过静态路由“/test/picking/”,成功了,我想问题只出在slug上。伙计,我对slug做了更多的阅读。我认为它真的应该像你一直尝试的那样工作。如果你明白了,请告诉我。