2011-07-01 28 views
21

Tôi có một mục nhập trong urls.py hoạt động như một bản tóm tắt tải một lượt xem đơn giản nếu nó tìm thấy một trang thích hợp trong cơ sở dữ liệu. Vấn đề với phương pháp này là trình giải mã URL sẽ không bao giờ thất bại, có nghĩa là chức năng APPEND_SLASH sẽ không khởi động - mà tôi cần.URL bắt tất cả Django mà không vi phạm APPEND_SLASH

Tôi không muốn phải sử dụng để thêm tiền tố vào URL trang tĩnh để ngăn chặn nó trở thành một điểm bắt kịp. Tôi biết về các trang phẳng, sử dụng móc 404 thay vì mục nhập trong urls.py và tôi đã hy vọng tránh phải sử dụng nó, nhưng tôi đoán vấn đề này có thể chính xác là lý do tại sao người ta sử dụng nó.

Bất kỳ cách nào làm tròn vấn đề này hoặc tôi nên đưa vào và sử dụng trang phẳng?

Trả lời

50

Đảm bảo rằng mẫu URL toàn bộ thư của bạn có dấu gạch chéo ở cuối và mẫu đó là mẫu cuối cùng trong URL của bạn . Nếu mẫu toàn cảnh không kết thúc bằng dấu gạch chéo, thì mẫu đó sẽ khớp với URL đi lạc trước khi phần mềm trung gian cố gắng thêm dấu gạch chéo. Ví dụ: sử dụng r'^.*/$' thay vì r'^.*' làm mẫu cuối cùng của bạn.

Để thực hiện tương tự, nhưng chuyển url vào chế độ xem làm đối số được đặt tên, hãy sử dụng r'^(?P<url>.*)/$'.

+0

Tôi đã chấp nhận câu trả lời của bạn. Tôi đang đối phó với cùng một câu hỏi này, nhưng tôi không thể hỏi lại, và tất cả những gì tôi có thể đưa ra là một vấn đề. Rực rỡ. –

+0

Tôi đã kết thúc với dự án này vì vậy tôi không thể kiểm tra điều này. Nhưng nó có ý nghĩa và phản hồi của Ben là đáng khích lệ, vì vậy tôi sẽ chấp nhận nó. – nedned

+1

Sự thiếu sót duy nhất là tất cả các URL của bạn sẽ không còn tồn tại cho các URL không có dấu gạch chéo –

0

Tuyên bố nếu tìm thấy trang tĩnh thích hợp trong cơ sở dữ liệu có vẻ như trang tĩnh của bạn không hoàn toàn tĩnh, bạn có thể chuyển liên kết của bạn qua urls.py (giống như bạn làm bây giờ) hoặc bạn trích xuất các trang từ DB, đặt chúng vào một thư mục và định cấu hình thư mục đó làm thư mục phân phối các tệp tĩnh

+0

Vâng, ok không hoàn toàn tĩnh. Trong thực tế, họ thực sự nhận được phân tích cú pháp như đánh dấu trong một mẫu rất đơn giản để họ không thể được phục vụ như các tập tin html. Vì vậy, yeah 'tĩnh' là gây hiểu nhầm ... ok cũng chỉ là sai. Tôi đã chỉnh sửa câu hỏi để xóa mô tả đó. Và lý do tôi không chỉ thêm một mục nhập theo cách thủ công cho mỗi mục là tôi muốn nó hoạt động giống như CMS, nơi người dùng có thể tạo các trang mà không cần phải chạm vào tệp nguồn. – nedned

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