2016-12-20 4 views
1

リダイレクトを作成してオブジェクトモデルをパラメータに渡していますが、これは機能しません。以下のコードである:以下URLコントローラへの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('/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/....をlistenしていますが、また、あなたのコントローラがクライアントに応答を送信確保test/...

にリダイレクトされます。このようなもの。

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

こんにちはフィリップをしたん、私はまだ私に404 – user280960

+0

ませフィリップを与えた、/テストにそれを変更し、それはコントローラ内部で取得されていない、私はポイントを壊す置きますチェックする。 – user280960

+0

こんにちはフィリップ、私は静的なルート '/テスト/ピッキング/'を試して、それは問題は、スラグだけで推測しています。 – 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。あなたのコードがうまくいかない理由がわからないのですが、私のコードに従うだけであなたが助けになります。 たぶん、あなたは別のスラグを使用している私は考え、私達にあなたの輸入を示し

関連する問題