С учетом uri как /home/
Я хочу найти функцию просмотра, которая соответствует, предпочтительно в форме, например app.views.home
или просто <app_label>.<view_func>
. Есть ли функция, которая даст мне это?Получить функцию просмотра по запросу uri?
12
A
ответ
23
Вы можете использовать метод resolve, предоставляемый django, чтобы получить функцию. Вы можете использовать атрибут __module__
функции, возвращаемой для получения метки приложения. Это вернет строку, такую как project.app.views
. Так что-то вроде этого:
from django.core.urlresolvers import resolve
myfunc, myargs, mykwargs = resolve("/hello_world/")
mymodule = myfunc.__module__
0
на основе KillianDS's answer, вот мое решение:
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))
Теперь вы можете просто позвонить return response(request)
в конце вашего зрения funcs, и он будет автоматически загрузить app/view.html
в качестве шаблона и передать в контексте запроса.
3
Начиная с Django 1.3 (март 2011 г.) функция resolve
в модуле urlresolvers
возвращает объект ResolverMatch
. Это обеспечивает доступ ко всем атрибутам разрешенного URL-адреса, включая путь, вызываемый вызовом.
>>> from django.core.urlresolvers import resolve
>>> match = resolve('/')
>>> match.func
<function apps.core.views.HomeView>
>>> match._func_path
'apps.core.views.HomeView'
Смежные вопросы
- 1. База объектов возврата по запросу uri
- 2. Как заблокировать перенаправление по пустому запросу uri
- 3. ставить обратный вызов uri по запросу Oauth
- 4. Как подражать запросу URI
- 5. Возвращая функцию MAX по запросу?
- 6. Отправить переменную для просмотра по запросу spec
- 7. Как запустить функцию контроллера по каждому запросу?
- 8. Получить контент по URI
- 9. Вызвать функцию AWS Lambda по запросу http
- 10. Получить данные маршрута по запросу
- 11. Oracle - Получить статистику по запросу
- 12. Получить Request.Form.Item по запросу Request.Form.Key
- 13. Получить фотографию контакта по URI
- 14. Non-www RewriteRule не работает по запросу URI
- 15. Google Analytics: просмотр фильтра по запросу URI - работает ли это?
- 16. получить первые несколько позиций по вашему запросу
- 17. Получить результат по запросу Linq-to-SQL
- 18. Не найден ресурс HTTP, соответствующий запросу URI
- 19. Загрузка файла xap по запросу
- 20. Справка по запросу LINQ
- 21. Данные прокрутки по запросу
- 22. AJAX сортировать по запросу
- 23. Публикация URI по HTTP
- 24. Django. Применить функцию к запросу
- 25. Получить функцию просмотра флэшка, которая соответствует url
- 26. IFNULL по запросу
- 27. ROW_NUMBER по конкретному запросу
- 28. dropwizard получить по запросу соединение jdbi
- 29. Получить контент iframe по запросу http java
- 30. Лучший способ получить матрицу исключения по запросу
У вас уже есть запрос, который вы можете просто выполнить request.resolver_match вместо того, чтобы разрешать –