콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
3 답글
13101 화면

Given the following URL: /route/?from=...?to=....

Could you please provide a code sample that demonstrates how to properly retrieve parameters from a query in an Odoo 16 controller?


class View(http.Controller):
@http.route('/smt', type='json', auth='public')
def ping(self, **kw):
print(kw) # kwargs is empty {}
return {'success': True}


아바타
취소

did you already found what you were looking for?

베스트 답변

Sure, here's a code sample demonstrating how to properly retrieve parameters from a query in an Odoo 16 controller:

python Copy code from odoo import http

class  MyController (http.Controller):
     @http.route( '/route/' , type = 'http' , auth= 'public' , website= True ) 
    def  my_route ( self, **kwargs ):
        from_param = kwargs.get( 'from' )
        to_param = kwargs.get( 'to' )

        # Your processing logic here

        return  "From: {}, To: {}" . format (from_param, to_param)

In the code above, we define a controller class MyController with a route /route/ . When a request is made to this route with query parameters like /route/?from=...&to=... , the my_route method will be executed. The **kwargs parameter allows us to capture all the query parameters passed to the route.

We then use the kwargs.get() method to retrieve the specific query parameters we are interested in, namely from and to . The get() method returns None if the parameter is not present, or the parameter's value if it exists.

Finally, you can perform your processing logic with the from_param and to_param variables as needed. In the example provided, we simply return a formatted string displaying the values ​​of from_param and to_param . You can replace this with your actual processing and response logic.



아바타
취소
베스트 답변

Hi,

Suppose if url is as follows: /new_ticket?category_id=3 and controller as below

@http.route('/new_ticket', type='http', auth='public')
def ping(self, **kw):

Inside kw you can access the category_id, ie, kw.get('category_id') will return value as 3 in this case


Thanks & Regards

Walnut Software Solutions

아바타
취소
베스트 답변

Hi,
If your controller is type='json', then you need to pass the arguments via the route. If you are using rpc.query, you can use params to pass the arguments.

eg: rpc.query({ route: "/web/action/load",
                params: {
                    action_id: action_id,
                    additional_context: additional_context,
                },

or if you are using ajax, you can use call.

eg: 
ajax.jsonRpc('/get_schedule', 'call',{'date': date_selected,})

Or 

if you are using type='http', then you can pass the parameters with the link.
eg: /new_ticket?category_id=3


Then you'll get category_id in kw.

Hope it helps

아바타
취소
관련 게시물 답글 화면 활동
1
9월 24
2546
1
4월 24
2253
2
1월 20
7666
3
7월 25
7349
0
2월 23
971