Python Django 1.6 在视图之前对每个请求执行函数

4 投票
2 回答
5762 浏览
提问于 2025-04-18 09:46

我正在为我的项目编写一些API功能,使用的是Python 3.4和Django 1.6。

所有功能都运行得很好,但我想为所有这类请求执行一个函数。
举个例子:我在Django项目的API应用中有以下的urls.py文件。

from django.conf.urls import patterns, include, url

urlpatterns = patterns('',

    url(r'^getposts', 'Postigs.views.get_posts', name='getPosts'),
    url(r'^addpost', 'Postigs.views.add_post', name='addPost'),
    url(r'^addcomment', 'Postigs.views.add_comment', name='addComment'),
)


还有处理这些URL请求的views.py文件。

那么,是否可以为示例执行某个函数呢?

def pre_execute(request):
    do_something_before_view_function()


我之前在很多PHP框架中工作过,总是会有一些pre_execute()函数……我也使用过ASP.NET MVC、Node.js Express.js,这些框架都有一个在请求动作之前触发的函数。

我不相信Django没有这个功能,但我找不到如何实现这个功能。

谢谢。

2 个回答

2

正如iskorum上面提到的,中间件就是答案。或者你可能在找视图装饰器。这里有个链接 https://docs.djangoproject.com/en/dev/topics/http/decorators/

撰写回答