• Django生命周期


    Django总结

    1.django请求生命周期
        http协议:
            四大特性:
                1.基于scoket应用于应用层的协议
                2.基于请求响应的协议
                3.无连接
                4.无状态
        WSGI协议:wsgiref,uwsgi,werkzeug实现模块
        中间件:默认七个中间件,五个可自定义方法,全局访问频率限制,权限限制等
            process_request  请求刚进来时
            process_view    经过url执行视图函数之前
            process_template_response   视图函数中return render时触发
            process_exception       视图函数中报错执行
            process_response    返回相应响应时
            
        urls.py:路由控制器
        MTV:
            views.py:
                视图层:FBV,CBV
                    CBV可张开讲:from django.views import View
                    看一下源码
                    
                返回结果必须是HttpResponse对象
                
            templates.py:
                模板语法:变量相关{{}},逻辑相关{%%}
                
            models.py:
                ORM操作
                
                
    2.django session机制
        request.session仅仅只是产生缓存,真正起作用还是中间件

        1.生成随机字符串

        2.把字符串所对应的信息存储到数据库中

        3.给前端返回对应的信息

    3.form组件 auth认证 
        1.登陆auth.login(request, user_obj)
        2.判断是否是登陆状态request.user.is_authenticated()
        3.修改密码——检查原来的密码user.check_password(old_password)
                             设置新的密码user.set_password(confirm_password)
                             保存user.save()
        4.注销auth.logout(request)
    4.django settings文件配置
    STATICFILES_DIRS = [
        os.path.join(BASE_DIR, "static"),  # 静态文件存放位置
    ]
    AUTH_USER_MODEL = "app01.UserInfo"#指定你所继承的类(用户表)
    
    # 指定用户上传的静态文件存储位置 例如avatar文件,会在media文件夹下自动创建avatar文件然后将文件存入avatar中
    # MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    在url.py中写下面的固定写法
    url(r'^media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT}),  # 固定写法 对外界开放服务器内部资源
    LOGIN_URL = '/login/'#装饰器(当你没有登陆时重定向到此路由)
    5.前后端传输数据编码格式
        简单前后端传输页面代码搭建
        http传输数据格式书写
        三种常见编码格式总结
            urlencoded ——username=jason&password=123
            form-data
            json--{"name":"jason","password":123}后台的信息在body中是二进制需要编码,需要先decode('utf-8')然后在json.loads()这个数据
        请求体数据格式推导
        请求首行作用ContentType参数作用
        浏览器查看form表单默认提交方式以及组织数据格式
        ajax提交数据(默认提交,json提交>>>前后端分离)
            request.POST无法解析>>>request.body存储原始数据

    admin源码

    from django.utils.module_loading 
    import autodiscover_modules
    def autodiscover():
            autodiscover_modules('admin', register_to=site)
    #django启动的时候就会自动执行每一个应用下的admin.py文件
    
    admin site源码
        class AdminSite(object):
            def __init__(self, name='admin'):
                self._registry = {}  # model_class class -> admin_class instance
            
            def register(self, model, admin_class=None, **options):
                if not admin_class:
                    admin_class = ModelAdmin  # 所有模型表公共的配置
    
                # (******)  {'模型表变量名':'模型表配置类对象'}
                self._registry[model] = admin_class(model)  
                
        site = AdminSite()#用的是模块的单例模式
  • 相关阅读:
    36_Cache Aside Pattern缓存+数据库读写模式的分析
    35_亿级流量商品详情页的多级缓存架构以及架构中每一层的意义
    34_redis阶段性总结:1T以上海量数据+10万以上QPS高并发+99.99%高可用
    33_redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)
    正则表达式全部符号解释
    如何正确学习JavaScript
    2015阿里校招前端笔试题
    前端面试总结2
    前端面试总结
    通俗易懂的来讲讲DOM
  • 原文地址:https://www.cnblogs.com/ShenJunHui6/p/10822121.html
Copyright © 2020-2023  润新知