给定一个像/home/
这样的URI我想查找与此相对应的查看功能,最好是以app.views.home
或<app_label>.<view_func>
的形式。有没有一个函数可以给我这个?从请求uri获取查看功能?
12
A
回答
23
您可以使用由django提供的resolve方法来获取该函数。您可以使用返回的函数的__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年3月)模块中的resolve
函数返回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. 从IClientMessageInspector获取请求URI
- 2. nsIWebprogressListener.onProgressChange():获取请求的URI
- 3. 使用PrettyFaces获取原始请求URI
- 4. Struts2获取原始请求URI
- 5. .htaccess在URI中获取请求
- 6. 获取请求URI。 Google Endpoints API
- 7. 如何获取RESTful webservice的请求URI
- 8. 在jinja2中获取请求URI?
- 9. 如何在Grails中获取请求URI?
- 10. 如何获取请求的URI
- 11. 获取io.netty.handler.codec.http.HttpRequest的基础URI urip请求
- 12. 从请求URI中提取锚标签
- 13. Django,查看从请求获取字典列表
- 14. 获取请求对象中的图的功能,但从`manage.py shell`
- 15. 如何从云功能请求中获取参数? Firebase
- 16. 发送从黄瓜功能产生的步骤获取请求
- 17. 从WCF请求获取请求域名?
- 18. 功能从MY_Controller查看 - 笨
- 19. 如何从发出Ajax请求的CodeIgniter视图获取URI段?
- 20. 如何从Django中的请求对象获取URI?
- 21. 如何从JAX-RS获取原始请求的URI javax.ws.rs.core.Response
- 22. 如何从javascript中的location.href中获取请求uri?
- 23. django调用模板中没有请求查看功能
- 24. 如何从端点/规则获取查看功能?
- 25. 查看cfhttp请求
- 26. Ajax获取请求查询
- 27. 如何查看由open-uri生成的GET请求标题
- 28. 查看取决于网络请求
- 29. Angular 2从http获取请求的对象获取请求
- 30. AJAX请求 - 如何查看请求?
鉴于您已经有了请求,您可以简单地执行“request.resolver_match”而不是调用resolve – 2016-05-27 06:52:35