5

Tôi đang cố gắng để làm một cái gì đó như:đảo ngược url để xem dựa lớp Django

trong urls.py:

... 
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo:''}) 
... 

trong views.py

.. 
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id, 'foo':'bar'})) 
... 

Nhưng điều này doesn' t dường như làm việc. Tôi nhận được một số đối chiếu cho 'video_detail' với các đối số '()' và đối số từ khóa '{' pk ': 13240L,' foo ':' bar} 'không được tìm thấy.

Tuy nhiên điều này không làm việc:

.... 
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id})) 
... 

tức. xoá foo: thanh khỏi cuộc gọi ngược lại. Cách chính xác để làm điều này và vượt qua các đối số bổ sung trong url ngược lại là gì?

Trả lời

8

reverse là chức năng tạo URL.

Bởi vì Bạn đã xác định chỉ pk mẫu trong các mẫu URL của bạn, bạn chỉ có thể sử dụng pk như là đối số để reverse (nó thực sự sẽ không có ý nghĩa để thêm foo từ url tạo ra sẽ giống hệt nhau cho giá trị bất kỳ foo). Bạn có thể thêm foo để mẫu URL hoặc tạo nhiều url đặt tên, ví dụ:

url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo':''}) 
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail2', kwargs={'foo':'bar'}) 

hoặc

url(r'^(?P<pk>\d+)/(?P<foo>\w+)/$', VideoDetailView.as_view(), name='video_detail') 
Các vấn đề liên quan