2011-03-24 41 views
8

Với một cái nhìn như thế này:Trong Django, bạn có thể tự động ánh xạ URL để xem các phương thức không?

# my_app/views.py 
def index(request): 
    ... 
def list(request): 
    ... 
def about(request): 
    ... 

Thay vì tuyên bố một cách rõ ràng các url trong urls.py cho mỗi phương thức trong giao diện:

# urls.py 
url(r'^index$', 'my_app.views.index'), 
url(r'^list$', 'my_app.views.list'), 
url(r'^about$', 'my_app.views.about'), 
... 

Có thể chỉ cung cấp cho các điều phối URL xem (my_apps.views) và có nó xử lý tất cả các phương pháp của khung nhìn?

Trả lời

1

Tôi cho rằng bạn có thể có một cái nhìn cho phép chụp một regexp url,

r'^(?P<viewtype>index|list|about)/$', 'myview'

với một cái nhìn để xử lý các thông số chụp.

def myview(request, viewtype): 
    if viewtype == 'index': 
      return http.HttpResponse("I'm the index view") 
    elif viewtype == 'list': 
      return http.HttpResponse("I'm the list view') 

Nhưng tôi thực sự khuyên bạn nên giữ nguyên logic xem của bạn để rõ ràng. Việc theo dõi 3 quan điểm khác nhau với các chức năng cụ thể của họ dễ dàng hơn nhiều so với 3 câu lệnh if/then.

+0

Vâng, tôi bị mắc kẹt với khai báo rõ ràng cho mỗi phương thức xem. Tôi không có quá nhiều để làm cho nó cần thiết để làm sạch 'urls.py' của tôi. Cảm ơn! –

+1

Tôi nghĩ đó là cuộc gọi đúng :) Đối với tôi, nếu tôi cần dọn dẹp urls.py, tôi sẽ sử dụng 'include (new_urls)' và giữ một url mới trong cùng một ứng dụng như khung nhìn. –

+0

lợi thế là nó thực sự hữu ích trong việc phát triển khi bạn tiếp tục thêm/gỡ bỏ các phương thức xem để không phải nghĩ về việc đồng bộ hóa lên urls.py với các phương thức trong khung nhìn. Ví dụ: PlayFramework hoàn thành điều này bằng cách cho phép bạn phân tích các phân đoạn url dưới dạng tên của trình điều khiển/phương thức – Tony

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