2011-09-18 24 views
18

Tôi muốn có thể thực hiện thẻ nếu dựa trên giá trị URL hiện tại. Ví dụ:Mẫu Django, nếu thẻ dựa trên giá trị URL hiện tại

ví dụ: nếu url của trang hiện tại là accounts/login/ thì không hiển thị liên kết mà không chuyển biến từ chế độ xem.

Tôi không chắc chắn làm thế nào tôi có thể viết một thẻ {% if %} cho điều này, là nó có thể?

+0

có thể trùng lặp: http://stackoverflow.com/questions/2882490/get-the-current-url-within-a-django-template – arie

Trả lời

19

Nếu bạn vượt qua những "yêu cầu" đối tượng cho mẫu của bạn, sau đó bạn có thể sử dụng này:

{% if request.get_full_path == "/account/login/" %} 
+0

Có một lỗi đánh máy rất nhỏ mà tôi không thể cập nhật bằng chỉnh sửa. Bạn cần sử dụng == not = để so sánh. –

36

Bạn cũng có thể làm điều này cho các url động sử dụng:

{% url 'show_user_page' user=user as the_url %} 
{% if request.get_full_path == the_url %}something{% endif %} 

nơi bạn urls.py chứa một cái gì đó như:

(r'^myapp/user/(?P<user>\d+)/$', 'show_user_page'), 

Tôi biết điều này vì tôi chỉ dành tuổi để soạn thảo luồng ngăn xếp câu hỏi, khi tôi tìm thấy the answer trong tài liệu.

Tôi muốn nói ngay cả trong trường hợp đơn giản, đây có thể là cách tiếp cận tốt hơn, bởi vì nó được kết hợp lỏng lẻo hơn.

+0

Woooow. 'như' đã có ngày của tôi. Sử dụng cùng một đoạn mã trên nhiều trang qua thẻ bao gồm và cần một cách để hiển thị các liên kết khác nhau tùy thuộc vào trang nào. Cách tiếp cận vô giá! – Rexford

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