2016-12-20 6 views
1

Я создаю перенаправление и передачу объектной модели параметру, но это не работает. Ниже приведен код:Odoo 8 pass model to URL Controller

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" 

, но это дает мне 404, маршрут не найден.

Результат журнала:

2016-12-20 20:14:18,990 19094 INFO NEW werkzeug: 127.0.0.1 - - [20/Dec/2016 20:14:18] "GET /test/picking/pg-000002-2 HTTP/1.1" 404 - 

ответ

0
test = '/test/picking/{}'.format(slug(picking)) # prepare url with slug 

Ваш маршрут прослушивает /test/.... но вы перенаправлении test/...

Также убедитесь, ваш контроллер посылает ответ клиенту. Что-то вроде этого.

return http.request.render('<your_addon>.<your_template_id>', data) 
+0

Привет, Филипп, я изменил его на/test, все еще дал мне 404 – user280960

+0

Нет, Филипп, он не попадает в контроллер, я поставил точку останова Проверять. – user280960

+0

Привет, Филипп, я пробовал со статическим маршрутом '/ test/picking /', это сработало, проблема только в slug, я думаю. – user280960

0

Я раньше не использовал слизню, но я решил помочь вам. Итак, я прочитал некоторый исходный код и сделал свой собственный рабочий код 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 

и 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,) 

Так это работает просто.

PS. Я не знаю причин, почему ваш код не работает, но только после моего кода поможет вам. Может быть, вы используете разные пули, я понятия не имею, покажите нам свои импортные

 Смежные вопросы

  • Нет связанных вопросов^_^