zoukankan      html  css  js  c++  java
  • Django入门

    一、什么是web应用

    1、软件开发架构

    c/s架构
        客户端
        服务端
    b/s架构
        浏览器
        服务器
    
    本质:b/s架构其实也是c/s架构


    2、HTTP协议

    超文本传输协议:规定了客户端与服务端消息传输的格式
    
    四大特性:
        1.基于TCP/IP协议作用于应用层的协议
        2.基于请求响应
        3.无状态
        4.无连接
    
    数据格式之请求:
        请求首行
        请求头(一堆k,v键值对)
        
        请求体(post请求携带的数据)
    
    数据格式之响应:
        响应首行
        响应头(一堆k,v键值对)
        
        响应体(post请求携带的数据)
    
    响应状态码
        1XX    服务器已经成功接受到你的数据正在处理,你可以继续提交其他数据
        2XX    请求成功 服务器已经将你请求的数据发送给你了
        3XX 重定向
        4XX 请求资源不存在
        5XX 服务器错误


    3、web应用程序的优、缺点

    优点:
    1.网络应用程序不需要任何复杂的“展开”过程,你所需要的只是一个适用的浏览器;
    2.网络应用程序通常耗费很少的用户硬盘空间,或者一点都不耗费;
    3.它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
    4.网络应用程序和服务器端的网络产品都很容易结合,如email功能和搜索功能;
    5.因为它们在网络浏览器窗口中运行,所以大多数情况下它们是通过跨平台使用的 (例如Windows,Mac,Linux等等)
    
    
    缺点:
    1.网络应用程序强调浏览器的适用性。如果浏览器方没有提供特定的功能,或者弃用特定的平台或操作系统版本(导致不适用),就会影响大量用户;
    2.网络应用依靠互联网远程服务器端的应用文件。因此,当连接出问题时,应用将不能正常使用。
    3.许多网络应用程序不是开源的,只能依赖第三方提供的服务,因此不能针对用户定制化、个性化,而且大多数情况下用户不能离线使用,因而损失了很多灵活性;
    4.它们完全依赖应用服务商的可及性。如果公司倒闭,服务器停止使用,用户也无法追索以前的资料。对比而看,即使软件制造商倒闭了,传统的安装软件也可以继续运行,尽管不能再更新或有其他用户服务;
    5.相似地,提供方公司对软件和其功能有了更大的控制权。只要他们愿意就能为软件添加新特性,即使用户想等bugs先被解决再更新。跳过较差的软件版本也不可能了。公司可以强加不受欢迎的特性给用户,也可以随意减少带宽来削减开支。
    6.公司理论上可以检索任何的用户行为。这有可能引起隐私安全问题。


    4、模板渲染

    后端生成的数据直接传递给前端页面使用(并且前端页面可以灵活的操作改数据) >>> 模板语法
    
    模板渲染 模板语法需要依赖于第三方模块
    pip install jinja2
    
    模板语法  jinja2支持前端直接使用类似于python的语法操作数据
    <p>{{ user_dic }}</p>
    <p>{{ user_dic.name }}</p>
    <p>{{ user_dic['password'] }}</p>
    <p>{{ user_dic.get('name') }}</p>
    
    {% for user in user_dict %}  <!--[{},{},{},{}]-->
        <tr>
            <td>{{ user.id }}</td>
            <td>{{ user.name }}</td>
            <td>{{ user.password }}</td>
        </tr>
    {% endfor %}


    二、python web框架

    1、简介

    web应用本质上就是一个socket服务端,而用户的的浏览器就是一个socket客户端。
    
    
    Django:大而全,自带了很多功能模块,类似于航空母舰(缺点:笨重)
    Flask:短小精悍,自带功能模块特别少,大部分都是依赖于第三方模块
    Tornado:异步非阻塞,主要用在处理高IO 多路复用的情况 可以写游戏后端
    
    Django:
        socket:用别人的wsgiref
        路由与视图函数:自己写的
        模板渲染:自己写的
        
    Flask:
        socket:用别人的werkzeug
        路由与视图函数:自己写的
        模板渲染:自己写的
        
    Tornado:
        三者都是自己写的


    三、Django

    1、创建Django项目注意事项

    1.计算机的名称不能有中文
    2.一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面
    3.项目名不能起中文


    2、安装Django

    1、版本
    推荐下载1.11.11版本
    
    2、下载
    pip3 install django==1.11.11
    
    3、验证是否下载成功
    django-admin


    3、创建Django的方式

    方式一(命令行创建):
        创建django目录
            django-admin startproject   项目名
        创建app应用
            python3 manage.py startapp app01
        启动django项目
            python3 manage.py runserver
        ps:用命令行创建django默认不会自动创建templates文件夹,需要手动创建(注意改文件夹路径是否被添加配置文件中)
        
    
    方式二(pycharm创建)
        FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
            创建app
                pycharm命令行创建
                    python3 manage.py startapp app01
                    Tools下面run manage task功能栏
                启动点小绿色箭头
                
    
    强调:
        1.用django一定要保证只有一个在运行状态  切记切记!!!
        2.一定记得清浏览器的缓存


    4、Django之app的概念

    app(应用)的概念:
        一个django项目就是一所大学
        app就是大学里面的学院
    
    
    注意新创建的app需要在配置文件中注册才能生效:
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01.apps.App01Config'      # 可以用全称
        'app01'            # 也可以简写
    ]


    5、Django各个文件的作用

    应用名:
        migrations :数据库迁移记录相关数据
        admin.py    django后台管理相关
        model.py    模型表相关
        view.py     视图函数相关
        
    项目名
        setting.py  配置文件
        urls.py     路由与视图函数的映射关系
        
    templates
        项目用到的所有html文件
        
    manage.py
        django入口文件


    6、django小白必会三板斧

    ##views.py##
    from django.shortcuts import render,HttpResponse,redirect
    
    HttpResponse  返回字符串
    
    render              返回一个html页面
          两种给前端页面传值的方式
            def reg(request):
                user_dict = {'name':'jason','password':'123'}
                return render(request,'reg.html',{'user_dict':user_dict})
            
            def reg(request):
                user_dict = {'name':'jason','password':'123'}
                return render(request,'reg.html',locals())
                
    redirect      重定向,既可以重定向到别的网址,也可以定向到自己的地址
  • 相关阅读:
    分位数(quantiles)、Z-score 与 F-score
    学术研究中的 NLP
    学术研究中的 NLP
    国内外免费电子书(数学、算法、图像、深度学习、机器学习)
    国内外免费电子书(数学、算法、图像、深度学习、机器学习)
    中英文对照 —— 缩略词
    内核编译及模块相关命令使用
    UVA 156 (13.08.04)
    hdu3117之矩阵快速幂
    系统运维技巧(三)——利用dd命令临时增加交换分区
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/11776611.html
Copyright © 2011-2022 走看看