|
Project Information
Members
Featured
Downloads
Links
|
IntroductionIt is an enhancement of django-crudapi project at first, but by now it has become an independent app. 介绍一个 django 通用 crud 操作的实现,开始设计时参考了 django-crudapi 实现的特性:
对应的 url 设置如下:(r'^(?P<key>api)/', include('apps.resource.urls')),
支持不固定的参数,可以在 GET 时添加搜索条件,如:
def before_update(self, request, obj):
# 同步设置当前修改时间和用户
if hasattr(obj, 'update_time'):
obj.update_time = datetime.today()
if hasattr(obj, 'update_user'):
obj.update_user = get_user(request)可以在 update 之前做一些额外的事情,将 update_user 设置为当前用户,将修改时间设置为当前时间等。类似的钩子还有 before_create, before_get_list 和 before_read。
用法resource 是一个django app,可以直接放入你的 app 目录下,并在 settings 中添加对应 INSTALLED_APPS 配置。最后在你的 urls.py 中 include resource 目录下的 urls.py 即可(推荐),例如:urls.py: # -*- coding: utf-8 -*-
from django.conf.urls.defaults import *
from django.db import models
from apps.resource import register
from apps.resource.Resource import Resource
# 可以通过继承来覆盖默认方法
class MyResource(Resource):
cannot_see_fields = ['id', 'passwd']
# 这里注册了所有 model, 正式项目中应该有选择的进行注册
for model in models.get_models():
register('api', model, Resource)
# 支持一个 model 多个 api
register('another_api', model, MyResource)
urlpatterns = patterns('',
(r'^$', 'django.views.generic.simple.direct_to_template',
{'template': 'index.html'}),
(r'^admin/', include('django.contrib.admin.urls')),
(r'^(?P<key>api)/', include('apps.resource.urls')),
(r'^(?P<key>another_api)/', include('apps.resource.urls')),
)url中应该有个名为 key 参数。 样例 |