2012-08-29 35 views
5

Tôi có một url quy định như sau:django {% url%} thẻ không có tham số

url(r'^details/(?P<id>\d+)$', DetailView.as_view(), name='detail_view'), 

Trong mẫu của tôi, tôi muốn có thể để có được url sau: /details/ từ url xác định.

Tôi đã thử {% url detail_view %}, nhưng tôi gặp lỗi vì tôi không chỉ định tham số id.

Tôi cần url không có ID vì tôi sẽ thêm url bằng cách sử dụng JS.

Tôi làm cách nào để thực hiện việc này?

+2

Mục đích sẽ là gì? URL này không thể khớp nếu không có tham số 'id', vậy tại sao bạn muốn tạo liên kết tới nó? Có thể bạn đang cố gắng giải quyết một vấn đề khác và giải pháp của bạn không phải là giải pháp đúng? –

+0

Tôi sẽ nối ID bằng javascript, nhưng tôi muốn có URL là biến js. – AlexBrand

+1

Bạn luôn có thể sử dụng đảo ngược với 'id = -1' (mà bạn không mong đợi là một ID anyway) và thay thế cực phải -1 bằng ID thích hợp khi bạn cần. Dường như rất khó tin với tôi nếu bạn hỏi tôi, nhưng luôn tốt hơn là xác định một URL khác. –

Trả lời

6

Chỉ cần thêm dòng này vào urls.py của bạn:

url(r'^details/$', DetailView.as_view(), name='detail_view'), 

hay:

url(r'^details/(?P<id>\d*)$', DetailView.as_view(), name='detail_view'), 

(Đây là một giải pháp sạch hơn - nhờ Thomas Orozco)

Bạn sẽ cần để chỉ định rằng id là tùy chọn trong chức năng xem của bạn:

def view(request, id=None): 
+0

Lưu ý: hai mẫu url sẽ cần phải có một tên duy nhất, vì vậy nếu bạn đặt tên là "detail_view", hãy đổi tên ban đầu thành "something_view_with_id". –

+2

Nếu bạn định chỉnh sửa chế độ xem để chấp nhận tham số tùy chọn, tôi nghĩ bạn cũng có thể đặt tham số tùy chọn: 'r '^ details/(? P \ d *) $''. –

+0

làm cách nào để bạn chỉ định thông số id trong mẫu '{% url detail_view%}' – user1629366

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