分类目录归档:Django-Dev

[ Django的内置信号 ]


一,模型信号

1. pre_init

pre_init
django.db.models.signals.pre_init
每当你实例化一个 Django 模型时,这个信号都会在模型的 __init__() 方法的开头发出。

用此信号发送的参数:

sender
刚刚创建了一个实例的模型类。
args
传递给 __init__() 的位置参数列表。
kwargs
传递给 __init__() 的关键字参数字典。

2. post_init

post_init
django.db.models.signals.post_init
和 pre_init 一样,但这个是在 __init__() 

< Read more >

[ Django文件下载 ]


views.py

from django.shortcuts import render
from django.http import StreamingHttpResponse
# Create your views here.

def index(request):
    return render(request, 'index.html')

def upload(request):
    res = StreamingHttpResponse(open('/home/ouzijun/ouzijun/Django_postgresSQL/django_p

< Read more >

[ django[middleware]中间件源码解析 ]


源码执行顺序

1. 通过嵌套装饰器wraps实现, 调用__call__魔术方法, 先执行request [321]里到外, 再执行response [123]外到里

from functools import wraps

def ex(get_response):
    @wraps(get_response)
    def inner(request):
        try:
            print('wraps-request')
            response = get_response(request)
        except 

< Read more >

[ Django中间件解析 ]


源码解析

1.刚开始会获取settings.py里配置的中间件 reversed反向

for middleware_path in reversed(settings.MIDDLEWARE):

2.process_view 添加到<视图中间件>列表前面 3.process_template_response 添加到<模板中间件>列表后面 4.process_exception 添加到<异常中间>件列表后面

if hasattr(mw_instance, "process_view"):
    # 1. 中间件存在方法proce

< Read more >

[ celery-django基本配置 ]


Celery官方文档

@app.task()

 通过使用app.task()装饰器,您可以轻松地从任何可调用的对象创建任务: 
from .models import User

@app.task
def create_user(username, password):
    User.objects.create(username=username, password=password)

 还可以为任务设置许多选项,这些选项可以指定为装饰器的参数:
 @app.task(serializer='json')
def create_user(username, passw

< Read more >

[ 密钥注意事项 ]


http://127.0.0.1:8000/api/token/ #账号获取密钥

  • 如果access过期了refresh没过期可以刷新,如果都过期了需要重新发送用户名密码获取才能使用

http://127.0.0.1:8000/api/token/verify/ #密钥获取数据

  • 密钥令牌refresh(刷新),access(令牌)都可以获取数据

http://127.0.0.1:8000/api/token/refresh/ #刷新密钥

  • 如果access过期了refresh没过期可以刷新,如果都过期了需要重新发送用户名密码获取才能使用

< Read more >