2011-08-22 22 views
8

phép nói rằng tôi có mã trong mẫu như thế này:Django mẫu liên kết với nếu else

<a href="#"> 
    {% if request.user.first_name or request.user.last_name %} 
     {{ request.user.first_name }} {{ request.user.last_name }} 
    {% else %} 
     {{ request.user }} 
    {% endif %} 
</a> 

Vấn đề với mã này là nó cho biết thêm dấu không gian liên kết, vì vậy liên kết trông giống như liên kết _ với gạch dưới cuối cùng.

Làm cách nào để xóa các dấu cách như vậy? {% spaceless %} thẻ không hoàn toàn trợ giúp ở đây vì nó chỉ loại bỏ dấu cách giữa các thẻ.

Trả lời

8

Tôi thực sự đã tìm thấy giải pháp đơn giản cho vấn đề của mình.

<a href="#">{% spaceless %} 
    {% if request.user.first_name or request.user.last_name %} 
     {{ request.user.first_name }} {{ request.user.last_name }} 
    {% else %} 
     {{ request.user }} 
    {% endif %} 
{% endspaceless %}</a> 

Bằng cách đặt thẻ không gian bên trong, nó sẽ xóa chuỗi. Đặt bên ngoài

0

Giải pháp thay thế nhanh: Sử dụng nhận xét html để "thoát" khoảng trống không cần thiết. Có lẽ giải pháp tốt hơn: Tạo một thẻ mẫu chứa điều kiện này.

0

Cử việc sử dụng một mẫu thẻ duy nhất - nó' d là tốt (và khá dễ dàng) để loại bỏ logic này khỏi mẫu.

Mặc dù, không chỉ sử dụng {{ request.user }} cho kết quả chính xác giống như những gì bạn đang làm ở đây?

+0

Trong django 1.3 '__unicode__' phương pháp lợi nhuận mô hình tài self.username –

+0

@marltu - khá chắc chắn nó luôn luôn là như vậy. –

0

Thay vì if-else khối cố gắng sử dụng phiên bản ngắn hơn:

{{ user.get_full_name|default:user.get_username }} 
Các vấn đề liên quan