分类标签归档:Django开发

[ Django+vue3+uwsgi+nginx+https本地部署 ]


1. vue3打包

会在项目目录下生成一个dist文件夹, 直接挂载到nginx中就行

npm run build

2. https本地版本配置

  1. openssl genrsa -des3 -out server.key 2048
  2. openssl req -new -key server.key -out server.csr 说明:需要依次输入国家,地区,城市,组织,组织单位,Common Name和Email。其中Common Name,可以写自己的名字或者域名,如果要支持https,Common Name应该与域名保持一致,否则会引起浏览器警告。
  3. openssl rsa -i

< Read more >

[ Django面试题[1] ]


  1. django, flask, tornado的比较
django框架设计为全栈的web框架,功能齐全, orm, 中间件, 模板语言,表单, 而且生态丰富有类型drf等.., 但是学习成本高
flask框架轻量级, 只有默认的wsgi依赖,与jinja2模板语言依赖, 学习成本低
tornado是异步框架, 非常适合高并发的场景下使用
  1. 什么是wsgi
是python的网络服务网关接口, 规定了web与python语言之间的通信
  1. django的生命周期

  2. django的内置组件

Admin site生成了强大的后台管理系统, 可以方便的管理数据库中的数据
ORM: 方便

< Read more >

[ 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 >