[oldboy-django][1初始django]web框架本质 + django框架 + ajax

1 web框架本质
    浏览器(socket客户端)
        - 2 发送请求(ip和端口,url http://www.baidu.com:80/index/)
            - GET
                请求头(数据请求行的url上: Http1.1 /index?nid=2&name=alex)
                请求体(空)
            - POST
                请求头
                    http1.1 /index?p=123 或者 http 1.1 /index/
                请求体
                    包含数据

        4 接收响应
            - 普通响应
                --页面直接显示
                -- 双方closed

            - 重定向响应
                -- 再发起一次http请求

    服务器(socket服务端)
        1 启动服务器,并监听ip和端口,等待用户连接
        3 接收请求,处理并返回
            - 普通返回(字符串) # render, HttpResponse
                -- 响应头
                -- 响应体

            - 重定向返回(只有响应头,响应体为空)
                -- 响应头
                    LOCATION: "http://www.baidu.com"
2 django web框架

    1 创建Project
        admin-django startproject mysite
    2 配置settings.py
        - 模板路径TEMPLATES DIRS
        - 静态文件路径 STATIC_URL, STATICFILES_DIRS
        - 额外配置:
            MIDDLEWARE = [
                'django.middleware.security.SecurityMiddleware',
                'django.contrib.sessions.middleware.SessionMiddleware',
                'django.middleware.common.CommonMiddleware',
                # 'django.middleware.csrf.CsrfViewMiddleware', # 这个本来不是注释的
                'django.contrib.auth.middleware.AuthenticationMiddleware',
                'django.contrib.messages.middleware.MessageMiddleware',
                'django.middleware.clickjacking.XFrameOptionsMiddleware',
            ]

    4 路由关系
        url  ->  函数


    5 视图函数
        def login(request):
            request.method
            request.POST(获取请求体数据)
            request.GET (获取请求头url的数据)

            return HttpResponse("字符串")
            return render(request, "login.html", {})
                1 获取模板 + 数据 进行渲染(成字符串)
                2 HttpResponse(字符串)
            return redirect("要跳转的网址")

    5 模板渲染
        {{ msg_str }}

        {{ msg_list.0 }}

        {{ msg_dict.key }}

        {% for item in msg_list %}
        {% endfor%}

        {% if 1>2 %}
        {% endif %}


3 ajax(特殊的向后台发数据方式) --单独前端技术
    
    - 引入jquery
    - $.ajax({
        url: '提交的地址',
        type: 'post', // 提交的方法
        data: {'k1':'v1, 'k2':'v2'},
        success: function(data){
        // 当服务器处理完成后,回调函数
        }
    })
    
    - ajax 和 form区别 
        -- form表单提交,页面会刷新(不能满足需求:数据错误,不能保留对话框)
        -- ajax提交页面不刷新,实现上面需求
        -- ajax存在缺点:数据对的时候,服务器不能实现跳转,只能用前端实现跳转
            location.href = "/classes/"

4 提交数据
        模态对话框(ajax)(登录框)
            - 少量输入框
            - 数据少
        新url方式(京东登录框,要打广告)
            - 操作多
            - 大量的数据
原文地址:https://www.cnblogs.com/liuzhipenglove/p/7735091.html