2010-06-25 25 views
5

Tôi đang cố chuyển đối số 'chuỗi' cho chế độ xem có url. The urls.py goPhân tích url Django -pass chuỗi thô

('^add/(?P<string>\w+)', add), 

Tôi gặp sự cố với các chuỗi bao gồm dấu chấm câu, dòng mới, khoảng trắng, v.v. Tôi nghĩ rằng tôi phải thay đổi \ w + thành một thứ khác. Về cơ bản, chuỗi sẽ được người dùng sao chép từ văn bản bạn chọn và tôi không muốn thay đổi nó. Tôi muốn chấp nhận bất kỳ ký tự và ký tự đặc biệt nào để chế độ xem hoạt động chính xác trên những gì người dùng đã sao chép.

Làm cách nào để thay đổi?

Cảm ơn!

Trả lời

2

Vâng, trước hết, có rất nhiều ký tự không được phép trong URL. Hãy suy nghĩ ? và khoảng trống cho người mới bắt đầu. Django có lẽ sẽ ngăn chặn những điều này được truyền cho quan điểm của bạn bất kể bạn làm gì.

Thứ hai, bạn muốn đọc lên mô-đun re. Đó là những gì đặt cú pháp cho các URL phù hợp. \w có nghĩa là bất kỳ chữ cái hoặc chữ thường hoặc chữ thường nào, hoặc số _ (về cơ bản, các ký tự nhận dạng, ngoại trừ nó không cho phép chữ số hàng đầu).

Cách đúng để chuyển chuỗi vào URL là tham số biểu mẫu (tức là sau một số ?paramName= trong URL và với các ký tự đặc biệt được thoát, chẳng hạn như dấu cách được thay đổi thành +).

4

Lưu ý rằng bạn chỉ có thể sử dụng các chuỗi có thể hiểu là URL thích hợp, bạn không nên chuyển bất kỳ chuỗi nào thành url.

tôi sử dụng regex này để cho phép các chuỗi giá trị trong url của tôi:

(?P<string>[\w\-]+) 

này cho phép để có 'sên; trong url của bạn (như: 'this-is-my_slug')

+0

BTW, '\ w' bao gồm' _' và '-' được coi là ký tự thay vì dấu vị trí nếu đó là điều đầu tiên sau' ['(và tùy chọn'^'), vì vậy bạn có thể viết '(? P [- \ w] +)'. –

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