2013-07-19 8 views
5

Tôi đang cố gắng sử dụng TemplateView.as_view() trong urls.py rồi đặt tên là sử dụng ye olde templatetag url. Công việc này có nên không? Hay tôi chỉ làm điều đó sai ..? Hoặc là một số trong những crap di sản trong ứng dụng của tôi can thiệp? Tôi đã có ...Làm cách nào để đảo ngược/đặt tên cho url bằng TemplateView.as_view?

<li><a href="{% url "legal" %}">Terms and Conditions</a></li> 

url(r'^legal/$', TemplateView.as_view(template_name="legal.html"), name="legal"), 

nào mang lại

NoReverseMatch at /how-it-works/ 
Reverse for '"legal"' with arguments '()' and keyword arguments '{}' not found. 

Dường như với tôi đây không phải là bao giờ sẽ làm việc theo cách này.

Làm cách nào để đảo ngược url với TemplateView?

Trả lời

3

Mã bạn đã đăng có cú pháp chính xác, nhưng có điều gì đó khác gây trở ngại.

  • Thẻ url đó là cú pháp Django 1.5+ (lưu ý cảnh báo trong tài liệu here), bạn có thể xác nhận đó là cài đặt bạn đang sử dụng không? Tôi nghi ngờ đây là vấn đề, việc trích dẫn kép của legal trong thông điệp ngoại lệ là rất đáng ngờ. Một thông báo ngoại lệ Django 1.5+ sẽ chứa 'legal', không phải '"legal"' cho một URL không được tìm thấy bởi điều phối viên.
  • Url có được đăng ký bởi người điều phối URL không? Bạn có thể nói trong chế độ gỡ lỗi bằng cách nhấn một URL xấu (tức là 404), đầu ra sẽ liệt kê tất cả các đường dẫn url hợp lệ từ URLConf của bạn.

Thêm thông tin khác nếu bạn tiếp tục gặp sự cố để chúng tôi có thể tách biệt thêm.

Chúc may mắn!

+0

Xin cảm ơn, tôi đang ở trên 1.4.5 nên lưu ý nhỏ về cú pháp có liên quan vì nó hoạt động nếu tôi 'không' bao gồm dấu ngoặc kép tức là:' {% url legal%} 'là cần thiết. –