Câu hỏi này hơi cũ, nhưng tôi đã gặp phải vấn đề tương tự và tôi nghĩ tôi sẽ thảo luận về giải pháp của mình. Một dự án Django nhất định rõ ràng cần một phương tiện để biết về tất cả các URL của nó và cần có thể thực hiện một số điều:
- bản đồ từ url -> xem
- ánh xạ từ một url được đặt tên -> url (sau đó 1 được sử dụng để xem)
- ánh xạ từ tên chế độ xem -> url (sau đó 1 được sử dụng để có được chế độ xem)
Django thực hiện điều này chủ yếu thông qua một đối tượng được gọi là a RegexURLResolver
.
- RegexURLResolver.resolve (bản đồ từ url -> chế độ xem)
- RegexURLResolver.reverse
Bạn có thể chạm tay vào một trong những đồ vật này theo cách sau:
from my_proj import urls
from django.core.urlresolvers import get_resolver
resolver = get_resolver(urls)
Sau đó, bạn chỉ cần in ra các url của mình theo cách sau:
for view, regexes in resolver.reverse_dict.iteritems():
print "%s: %s" % (view, regexes)
Điều đó nói rằng, giải pháp của Alasdair là hoàn toàn tốt và có một số ưu điểm, vì nó in ra một số điểm độc đáo hơn phương pháp này. Nhưng biết về và chạm tay vào một RegexURLResolver
đối tượng là một điều thú vị cần biết, đặc biệt nếu bạn quan tâm đến nội bộ Django.