2009-09-07 2 views
6

Trong Python và GAE, tôi muốn hỏi cách lấy các tham số của chuỗi truy vấn trong url. Như tôi biết, phần query_string trả về tất cả các phần sau "?" trong url. Vì vậy, những gì tôi phải làm là chia chuỗi truy vấn với "&" và sử dụng các biến. Có cách nào thuận tiện khác để quản lý chuỗi truy vấn không? Bạn thường làm như thế nào?Máy ứng dụng của Google - Yêu cầu lớp query_string

str_query = self.request.query_string 
m = str_query.split('&') 
a = m[0] 
b = m[1] 
c = m[2] 

Làm theo cách này, trong trường hợp, các QUERY_STRING không có bất kỳ giá trị, nó ném một lỗi:

IndexError: list index out of range 

Trả lời

18

Bạn không cần phải làm phức tạp. Bạn có thể lấy tất cả các thông số GET với:

self.request.get('var_name') 

Hoặc nếu bạn muốn lấy chúng tất cả trong một danh sách, bạn có thể sử dụng:

self.request.get_all() 

Bạn có thể tìm thêm thông tin về các yêu cầu lớp here.

+0

Cảm ơn bạn rogerio, nó hoạt động! –

+4

self.request.get_all() không thực sự hoạt động mà không có tham số; nó không trả về tất cả các biến truy vấn, nó chỉ trả về tất cả các giá trị của một biến cụ thể. Để có danh sách đầy đủ, bạn cần sử dụng self.request.arguments(). – apenwarr

+1

Như @apenwarr nói, đây không còn là câu trả lời hợp lệ: 'get_all' cần tên tham số để lấy tất cả các giá trị cho – marianosimone

0

Nếu bạn muốn để lặp qua tất cả các thông số yêu cầu của bạn, bạn nên làm một cái gì đó như thế này:

for argument in self.request.arguments(): 
    values = self.request.get_all(argument) 
    # do something with values (which is a list) 

Hoặc, bạn có thể xây dựng riêng của bạn dict chứa tất cả các dữ liệu:

params = {arg: self.request.get_all(arg) for arg in self.request.arguments()}