2012-11-06 32 views
6

Tôi đang cố gắng sử dụng các hộp kiểm trong HTML của mình, trả lại các hộp kiểm này cho chương trình phụ trợ python của tôi và sau đó tăng ba bộ đếm nếu hộp được nhấp.Cách lấy hộp kiểm trong Python

Ngay bây giờ HTML của tôi là như sau và hoạt động tốt:

<form method="post"> 
    <input type="checkbox inline" name="adjective" value="entertaining">Entertaining 
    <input type="checkbox inline" name="adjective" value="informative">Informative 
    <input type="checkbox inline" name="adjective" value="exceptional">Exceptional 
</form> 

và sau đó trên python backend của tôi, tôi có như sau:

def post(self): 
    adjective = self.request.get('adjective ') 

    if adjective : 
     #somehow tell if the entertaining box was checked 
     #increment entertaining counter 
     #do the same for the others 
+0

tôi nghĩ rằng có thể làm cho tên trong html "tính từ []" ... có lẽ ... –

+0

Bạn biết bạn có thể chỉ tính từ 'in 'để xem những gì trong đó, phải không? Nó sẽ kết thúc trộn lẫn với HTML của bạn nhưng bạn chỉ có thể xem nguồn để có một cái nhìn ... – kindall

+0

@ kindall đó sẽ là tốt cho gỡ lỗi nhưng tôi cần phải làm điều đó programatically để nó sẽ làm việc mỗi lần trên backend – clifgray

Trả lời

7

Khi hình thức của bạn có nhiều hộp kiểm với cùng name thuộc tính, yêu cầu khi biểu mẫu được gửi sẽ có nhiều giá trị cho tên đó.

Mã hiện tại của bạn sử dụng Request.get để nhận giá trị, nhưng điều này sẽ chỉ lấy giá trị đầu tiên nếu có nhiều giá trị. Thay vào đó, bạn có thể nhận tất cả các giá trị sử dụng Request.get_all(name) (trong webapp) hoặc Request.get(name, allow_multiple=True) (trong webapp2). Điều này sẽ trả về một danh sách (có thể trống) với tất cả các giá trị cho tên đó.

Đây là cách bạn có thể sử dụng trong trong mã của bạn:

def post(self): 
    adjectives = self.request.get('adjective' allow_multiple=True) 
    for a in adjectives: 
     # increment count 
     self.adjective_count[a] += 1 # or whatever 

     # do more stuff with adjective a, if you want 

    # do other stuff with the request 
+0

cảm ơn! có ý nghĩa nhưng tôi không thể tìm thấy điều này một cách dễ dàng trực tuyến – clifgray

+0

Tôi nghĩ [this] (http://webapp-improved.appspot.com/guide/request.html) là phần có liên quan của tài liệu. – Blckknght

0

nó wouldnt được dễ dàng hơn để thay đổi tên =" "và đặt nó giống như giá trị, vì vậy bạn có thể jsut hỏi

NẾU giải trí:

NẾU thông tin:

im không lập trình python chỉ nói cho phép bạn không

+0

có Tôi đồng ý điều này là một chút dễ dàng hơn nhưng tôi không nghĩ rằng đó thực sự là cách thích hợp. Tôi có thể đã sai. – clifgray

+0

là có giống như một câu lệnh switch nơi như thế nào nếu == tính từ entertaing: // đang in hoặc chuyển trường hợp 1 nếu == tính từ giải trí: // thực thi trường hợp 2 nếu tính từ == thông tin: // thực thi – ELHippie

+0

Python không có câu lệnh chuyển đổi. Thông thường, cách khác là sử dụng từ điển. Nhưng tôi e rằng tôi không thực sự hiểu mã được đề xuất của bạn (nó có thể giúp đưa nó vào câu trả lời, nơi bạn có thể định dạng nó đúng cách). – Blckknght

Các vấn đề liên quan