Với một số điện thoại như /home/
Tôi muốn tìm chức năng xem tương ứng với, tốt nhất là ở dạng như app.views.home
hoặc chỉ <app_label>.<view_func>
. Có một chức năng mà sẽ cho tôi điều này?Nhận chức năng xem từ yêu cầu uri?
12
A
Trả lời
23
Bạn có thể sử dụng phương thức resolve do django cung cấp để nhận hàm. Bạn có thể sử dụng thuộc tính __module__
của hàm được trả về để nhận nhãn ứng dụng. Điều này sẽ trả về một chuỗi như project.app.views
. Vì vậy, một cái gì đó như thế này:
from django.core.urlresolvers import resolve
myfunc, myargs, mykwargs = resolve("/hello_world/")
mymodule = myfunc.__module__
0
Dựa trên KillianDS's answer, đây là giải pháp của tôi:
from django.core.urlresolvers import resolve
def response(request, template=None, vars={}):
if template is None:
view_func = resolve(request.META['REQUEST_URI'])[0]
app_label = view_func.__module__.rsplit('.', 1)[1]
view_name = view_func.__name__
template = '%s.html' % os.path.join(app_label, view_name)
return render_to_response(template, vars, context_instance=RequestContext(request))
Bây giờ bạn chỉ có thể gọi return response(request)
vào cuối funcs nhìn của bạn và nó sẽ tự động tải lên app/view.html
như mẫu và chuyển vào ngữ cảnh yêu cầu.
3
Kể từ Django 1.3 (tháng 3 năm 2011), hàm resolve
trong mô-đun urlresolvers
trả về đối tượng ResolverMatch
. Cung cấp quyền truy cập vào tất cả các thuộc tính của đối sánh URL được giải quyết, bao gồm cả đường dẫn có thể gọi.
>>> from django.core.urlresolvers import resolve
>>> match = resolve('/')
>>> match.func
<function apps.core.views.HomeView>
>>> match._func_path
'apps.core.views.HomeView'
Các vấn đề liên quan
- 1. Nhận URI yêu cầu ban đầu với PrettyFaces
- 2. Yêu cầu) chức năng (trong JavaScript
- 3. thực thi yêu cầu chức năng gọi
- 4. Nhận neo từ URI
- 5. nodejs, socket.io: cách nhận yêu cầu và phản hồi từ chức năng socket?
- 6. Google plus Yêu cầu vấn đề URI
- 7. Tại sao yêu cầu trong ns hình thức cư xử khác với yêu cầu chức năng
- 8. Chỉ chấp nhận yêu cầu nhận/gửi từ localhost
- 9. Bao gồm Id trong URI cho các yêu cầu PUT
- 10. mô tả 'getter' yêu cầu một đối tượng 'tài sản' nhưng nhận được một 'chức năng'
- 11. Rails datatables ajax json 414 yêu cầu URI quá lớn
- 12. Sự khác biệt giữa đá quý và yêu cầu (yêu cầu mở-uri)
- 13. chức năng trả về một giá trị từ yêu cầu gọi ajax
- 14. PHP Zend Framework - Làm thế nào để yêu cầu phân đoạn URI từ đối tượng yêu cầu?
- 15. Chức năng toàn cầu CodeIgniter
- 16. Java: Nhận URI từ FilePath
- 17. Cách kiểm tra xem URI yêu cầu có bất kỳ tham số nào không
- 18. Nhận thông tin yêu cầu trong trợ giúp xem
- 19. Spring-MVC 3.1: Chuyển tiếp yêu cầu từ một chức năng điều khiển đến
- 20. Làm thế nào để yêu cầu uri từ location.href trong javascript?
- 21. Parametrized nhận được yêu cầu trong Ruby?
- 22. JSP/Servlet Cách xác định xem yêu cầu HTTP đến từ yêu cầu ajax
- 23. Chức năng jquery toàn cầu
- 24. Nhận "Yêu cầu chiều dài 411" sau yêu cầu PUT từ Máy khách HTTP
- 25. Android - Gửi HTTPS Nhận Yêu cầu
- 26. Nhận địa chỉ IP yêu cầu với Pyramid
- 27. Cách nhận URL yêu cầu?
- 28. Nhận url yêu cầu từ đối tượng xhr
- 29. Nhận số lượng yêu cầu trong IIS từ C# code
- 30. Nhận tệp từ yêu cầu http trong java
nếu bạn đã có yêu cầu, bạn có thể chỉ cần thực hiện "request.resolver_match" thay vì gọi điện –