Một vài tùy chọn trong tệp cài đặt django là các url, ví dụ: LOGIN_URL
và LOGIN_REDIRECT_URL
. Có thể tránh hardcoding những url này, và thay vào đó sử dụng ánh xạ url đảo ngược? Tại thời điểm này thực sự là nơi duy nhất mà tôi thấy mình viết cùng một url ở nhiều nơi.Django - sử dụng ánh xạ url ngược trong cài đặt
Trả lời
Django 1.5 và sau
Tính đến Django 1.5, LOGIN_URL
và LOGIN_REDIRECT_URL
chấp nhận tên mẫu URL. Điều đó có nghĩa là bạn không cần phải mã hóa bất kỳ url nào trong cài đặt của mình.
LOGIN_URL = 'login' # name of url pattern
Đối với Django 1,5-1,9, bạn cũng có thể sử dụng xem tên hàm, nhưng điều này là không nên vì nó bị phản đối trong Django 1.8 và sẽ không làm việc trong Django 1.10+.
LOGIN_URL = 'django.contrib.auth.views.login' # path to view function
Django 1,4
Đối với Django 1.4, bạn có thể có thể sử dụng reverse_lazy
LOGIN_URL = reverse_lazy('login')
Django 1.3 và trước đó
Đây là câu trả lời ban đầu, mà làm việc trước khi reverse_lazy
đã được thêm vào Django
Trong url s.py, cài đặt nhập khẩu:
from django.conf import settings
Sau đó, thêm mẫu url
urlpatterns=('',
...
url('^%s$' %settings.LOGIN_URL[1:], 'django.contrib.auth.views.login',
name="login")
...
)
Lưu ý rằng bạn cần phải cắt LOGIN_URL
để loại bỏ các dấu gạch chéo lên hàng đầu.
Trong vỏ:
>>>from django.core.urlresolvers import reverse
>>>reverse('login')
'/accounts/login/'
Ah, giải pháp tốt, tôi đã không xem xét đi từ cài đặt -> url, chỉ có cách khác xung quanh. +1 –
Và bạn có thể tránh mã hóa cứng gốc django, sao cho/accounts/login đăng nhập vào/root/accounts/login nếu ứng dụng django của bạn được triển khai trên example.com/root thay vì example.com/? – gozzilli
@gozzilli - kể từ Django 1.4, tôi sẽ sử dụng 'reverse_lazy' thay vì nhập' settings.LOGIN_URL' vào url. Tôi đã cập nhật câu trả lời. – Alasdair
Trong django phiên bản phát triển reverse_lazy() sẽ trở thành một lựa chọn: https://docs.djangoproject.com/en/dev/ref/urlresolvers/#reverse-lazy
+1 cảm ơn vì đã đầu hàng! –
Dự kiến phát hành te 1.4 vào tháng 3 năm 2012 –
Đây là đoạn mã cho các phiên bản trước: http://djangosnippets.org/snippets/499/ –
- 1. URL Django, cách ánh xạ gốc tới ứng dụng?
- 2. App Engine ánh xạ URL
- 3. URL Django, sử dụng? trong URL
- 4. Ánh xạ URL với C# HttpListener
- 5. Ánh xạ URL trong Tomcat tới servlet FrontController
- 6. Url Ánh xạ tới các tệp tĩnh trong Grails
- 7. Mẫu URL để ánh xạ servlet trong web.xml
- 8. Trong Django, bạn có thể tự động ánh xạ URL để xem các phương thức không?
- 9. Loại trừ url khỏi ánh xạ bộ lọc trong web.xml
- 10. java.lang.IllegalArgumentException: Invalid <url-pattern> trong ánh xạ servlet
- 11. Cài đặt Django AllAuth
- 12. Ánh xạ giao thức URL tùy chỉnh tới HTTP (sử dụng NSURLProtocol?)
- 13. Có tìm kiếm nhanh về ánh xạ url-to-controller khi @RequestMapping được sử dụng không?
- 14. Thay đổi cài đặt và ánh xạ trên chỉ số tồn tại trong Elasticsearch
- 15. Cách xác định ánh xạ trong elasticsearch không chấp nhận các trường khác mà các ánh xạ được ánh xạ?
- 16. Đặt nhãn trên biểu đồ 3D ánh xạ trong Gnuplot
- 17. Tạo một Grails bắt tất cả các ánh xạ URL
- 18. Tên gói Hackage được ánh xạ tới tên 'cài đặt cabal' như thế nào?
- 19. Fluent Nibernate đặt mệnh đề where trong ánh xạ
- 20. Nơi đặt ánh xạ đối tượng (trong RestKIt)
- 21. Ánh xạ liên kết với siêu lớp được ánh xạ
- 22. django cài đặt cụ thể ứng dụng
- 23. Sử dụng HashMap để ánh xạ một Chuỗi và int
- 24. cài đặt xcode - đường dẫn đến tệp ánh xạ liên kết - nó là gì?
- 25. DDD: Nơi đặt logic bền bỉ và khi nào thì sử dụng ánh xạ ORM
- 26. Cách bộ nhớ được ánh xạ khi sử dụng nĩa?
- 27. Sử dụng Dapper để ánh xạ hơn 5 loại
- 28. Đảo ngược URL không gian tên trong Django: nhiều phiên bản của cùng một ứng dụng
- 29. Đảo ngược URL Django Với Tùy chọn Bổ sung
- 30. Sử dụng phản xạ để tìm giao diện được cài
Tôi nghi ngờ điều đó, vì 'settings.py' được nạp trước module URL. Quan tâm để tìm hiểu mặc dù. Câu hỏi tuyệt vời. –