自定义标签
app/templatetags (包含 __init__.py)
# poll_extras.py
方式一:@register.tag()
1,定义节点类的 render 函数,返回输出内容,或者复制给 context 变量
2,定义标签函数,返回节点类
方式二:@register.assignment_tag()
1,定义函数,直接返回输出内容
# 将变量绑定到模板中一起输出
@register.inclusion_tag('res.html')
自定义过滤器
类似 自定义标签
定义函数,然后返回结果
@register.filter()
def my_filter(value, arg):
return value.replace(arg, '')
@register.filter()
@stringfilter
def lower(value):
return value.lower()
# 关于转义,默认情况下系统过滤器会自动进行转义,自定义的过滤器则不会转义而是输出原样
可以使用 is_safe=True 或者 make_safe()
Jinja2
自定义 manager (封装查询语句)
# models.py
class xxx:
todoList = models.Manager()
# 方式一,自定义 Manager 里的 get_queryset 方法
# 方式二,自定义 Manager 里的 自定义方法
# 方式三,自定义 QuerySet 子类
自定义Form
集成已有数据库表
集成 Mongodb
使用多个数据库
自定义 Field
admin 高级定制
# 中文界面:settings.py
MIDDLEWARES_CLASS=['django.middleware.locale.LocaleMiddleware']
确保在’django.contrib.sessions.middleware.SessionMiddleware’,之后即可
# 定制 User 表
from django.contrib.auth.admin import UserAdmin
admin.site.unregister(User)
@admin.site.register(User)
class MyUserAdmin(UserAdmin):
list_display = ('name',)
# 定制编辑页模板
change_form_template = 'some.html' // 一个字段
# some.html
{% extends 'admin/change_form.html' %}
{% block form_top %}
<p>Some Text</p>
{% endblock %}
自定义 Admin Widget (字段控件)
自定义 Admin Actions (操作)
通用视图
View, RedirectView, TemplateView, ListViewDetailView,
FormView, CreateView, UpdateView, DeleteView,
Generic date views
# 使用:urls.py
url(r'^index',TemplateView.as_view(template_name='index.html')
# 自定义 View
class IndexView(TemplateView):
template_name = 'index.html'
# 未完待续....
# 通用视图意义: 去除重复代码
Restful 框架
# 安装
pip install djangorestframework
# settings.py
APPS = [ 'rest_framework' ]
# serializers.py
class PoemSerializer(ModelSerializer):
class Meta:
model
fields
# views.py
# 多个
class PoemListView(APIView)
def get:
return Response(serializer.data)
def post:
serializer.save()
return Response(serializer.data, status)
# 一个
@api_view(['get', 'post', 'delete'])
def poem_detail(request, pk):
if request.method == 'get'
elif
else
return Response(serializer.data)