2012-11-29 36 views
6

Tôi muốn biết cách tôi có thể chuyển url dưới dạng tham số của bao gồm trong mẫu django.Cách chuyển url dưới dạng tham số bao gồm

Tôi có trong mã của mình, tệp HTML được sử dụng để tạo nút. Vì vậy, khi muốn thêm nút này, tôi chỉ bao gồm nó. Vấn đề là 1 trong số các tham số là URL, và bây giờ tôi đã không tìm thấy giải pháp khác hơn là đặt url văn bản.

SO những gì tôi có điều này:

{% include "button.html" with title="title" link="/new-event/" %} 

và tôi sẽ phải có cái gì đó như:

{% include "button.html" with title="title" link={% url myview.view%} %} 

Cảm ơn bạn rất nhiều!

Trả lời

4

Tôi tin rằng bạn sẽ phải chỉ định url cho biến được thêm vào ngữ cảnh để sử dụng biến đó trong thẻ bao gồm.

Ví dụ:

xem:

from django.core.urlresolvers import reverse 

def your_view(request): 
    url = reverse('the_url_name_to_reverse', args=[], kwargs={}) 
    return render(request, 'the-template.html', {'url': url}) 

mẫu:

{% include "button.html" with title="title" link=url %} 

Nếu đó là một giá trị mà bạn cần trong mỗi mẫu, bạn có thể cân nhắc việc thêm một bộ xử lý ngữ cảnh để thêm giá trị url đã đảo ngược vào ngữ cảnh

+0

Cảm ơn bạn đã trả lời. Trong thực tế, đó là những gì tôi đang tìm kiếm. – trnsnt

+0

Bạn đang rất hoan nghênh. Mừng vì tôi có thể giúp. – Brandon

2

Một số có thể tìm thấy giải pháp này phù hợp hơn:

đầu tiên tạo ra một bộ lọc

from django.core.urlresolvers import reverse 
@register.filter() 
def rev(value): 
    return reverse(value) 

sau đó sử dụng nó trong các mẫu như thế này

{% include "button.html" with title="title" link="myview.view"|rev %} 
+0

Yêu thích nó; nó tránh để lấp đầy tầm nhìn với mã không cần thiết. –

7

bạn đã thử cú pháp sau:

{% url 'some-url-name' arg arg2 as the_url %} 
{% include "button.html" with title="title" link=the_url %} 
+1

Thật ngắn gọn, nó hoạt động và không yêu cầu tôi viết thêm bất kỳ mã nào. Cảm ơn. – Mael

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