2013-04-25 34 views
10

Trong mẫu Django của tôi, tôi cần gán giá trị của một tên url vào một biến trong một khối để tôi có thể sử dụng nó ở nhiều nơi.Gán giá trị của URL được đặt tên cho biến trong các mẫu Django

tôi cần phải đạt được một cái gì đó như thế này:

{% for tag in post.tags.all %} 
    {% with tagabs={%url showtag tag%} %} 
      <li><a href="{{tagabs}}">#{{tag}}</a></li> 
    {% endwith %} 
{% endfor %} 

Nhưng rõ ràng đó không làm việc và sẽ kết thúc với một lỗi phân tích cú pháp. Ví dụ trên là một trường hợp đơn giản mà tôi chỉ có thể có {% url thẻ showtag%} thay vì {{tagabs}} và xóa khối bằng. Nhưng trong kịch bản của tôi giá trị tagabs tôi cần phải sử dụng nó ở một vài nơi và trong một câu lệnh if để so sánh.

Cảm ơn sự giúp đỡ.

+0

bạn có thể đưa ra thông tin một chút thêm về các vấn đề lớn hơn xin vui lòng? – rockingskier

Trả lời

31

Tại sao tạo thẻ/bộ lọc mẫu mới nếu đối tượng địa lý nằm trong lõi?

Nhìn mẫu tại địa chỉ: https://docs.djangoproject.com/en/dev/ref/templates/builtins/#url

{% url 'path.to.view' arg arg2 as the_url %} 

<a href="{{ the_url }}">I'm linking to {{ the_url }}</a> 

{% url 'path.to.view' as the_url %} 
{% if the_url %} 
    <a href="{{ the_url }}">Link to optional stuff</a> 
{% endif %} 
+0

Đề xuất tuyệt vời, chắc chắn thanh lịch hơn nhiều so với thẻ mới. Cảm ơn! –

-4

Tôi nghĩ bạn sẽ phải tự tạo template tag để quản lý sự cố này hoặc tạo dữ liệu cần thiết trong chế độ xem và chuyển dữ liệu đó vào mẫu.

Tùy thuộc vào chính xác những gì bạn đang cố gắng làm có thể including một mẫu khác và gửi trong biến được xác định của bạn có thể làm điều đó, nhưng tôi nghi ngờ điều đó.

Tư duy đằng sau hệ thống tạo khuôn mẫu Djangos là làm cho nó không có nhiều logic trong các mẫu. Và do đó, nó sẽ trở lại chuẩn bị dữ liệu bạn cần cho đầu ra trong khung nhìn hoặc tạo một thẻ mẫu.

+0

Tại sao phát minh lại bánh xe khi thẻ url đã thực hiện công việc ??? –

+0

Vì cách tôi hiểu câu hỏi không phù hợp với bất kỳ hành vi cốt lõi nào mà tôi biết. Cách nó xảy ra với tôi là ai đó đang cố gắng thực hiện các hoạt động phức tạp trong quan điểm và không chỉ đơn giản là đặt tên cho một URL. – gaqzi

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