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

    Django入门
    一、
    
    1、互联网两台机器之间通行:ip、端口、协议
        - 协议
            - HTTP  (80- HTTPS  (443) 
    
    2、浏览器输入URL一回车返回页面发生了什么?
        - 域名 -> DNS解析 -->ip地址 -> 找到服务端 ->服务端返回消息 -> 浏览器
        - 浏览器 <-> 服务器
        - 服务器把 写好的HTML页面,返回给浏览器,浏览器按照HTML格式渲染
        「
    
        」
    
    3、请求和相应
        - HTTP协议的特点:
            - 浏览器给服务端发消息的过程叫请求(request)
            - 服务器给浏览器回复消息的过程叫响应(response)
            
        - 请求和相应的消息都必须遵循一个固定的格式
    
    4、python中Web框架分类
        - a、收发socket消息,按照HTTP协议解析消息   Web服务程序 wsgiref、gunicorn、uWSGI
        - b、字符串替换,用来实现动态网页                                
        - c、业务逻辑处理                            Web应用程序
    
        1- 自己实现abc的
            - Tronado  
        2- 自己实现bc使用别人的a
            - Django
        3- 自己实现c使用别人的ab
            - Flask
    5、Web服务程序  <-  WSGI协议  -> Web应用程序
    
    
    5.5、Django版本
        - LTS版本 (Long Team support)
    
    6、创建第一个Django项目
        
        安装:  pip install django==1.11.11
                pip install django==1.11.11 -i 指定源 
    
        - 1、命令行  Django-admin startproject first_Django
        - 2、Pycharm创建
            - file -> new Project ->右侧选Django -> 选好路径 ->选好环境 -> 名字app -> 在新的窗口打开文件
        - 3、启动项目
            - 命令行启动(切换到项目的根目录)
                - python manage.py runserver 127.0.0.1:8090(改端口这样指定)
            - pycharm启动
                - 框中选项为项目名->让后点击启动按钮(右上角)(如果想改就在旁边点编辑-就可以改端口等)
    
        - 目录介绍
            - 和项目名一样的是根目录
            - 
        ---------------------
        - 先来一份自己的理解
            - 1、(与我们所创建文件名一致的目录)根目录
                - manage.py 
                    - 这是启动文件,程序入口。
                - settings.py
                    - 包含了项目的一些设置,包括数据库信息、调试标志以及其他的一些工作的变量。
                    - BASE_DIR = 项目的根目录
                    - TIMELATES = templates去哪找
                    - DATABASES = 数据库
                    - 静态文件配置
                        - STATIC_URL = '/static/' # 请别名
                        - STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),] # 配置去static下找静态文件
                - urls.py
                    - 路径与视图函数的映射关系
    
    
            - 2、templates - 这个文件夹存放的是HTML文件
            - 3、static - 这个文件夹是存放静态文件,需要自己配置,用的时候的导入时用 
                 /static/.. 来引入所用的静态文件
                     # Static files (CSS, JavaScript, Images)
                    # https://docs.djangoproject.com/en/1.11/howto/static-files/
    
                    # 这个static就代表了下面的路径 (寻找的时候就是去static下面的路径中挨个找)
                    STATIC_URL = '/static/'  # 起别名, HTML中找静态文件都要以这个别名开始  (找到别名后就去这个别名的配置比文件中找对应的文件)
    
                    # 这个常量是固定格式
                    STATICFILES_DIRS = [
                        os.path.join(BASE_DIR, 'static'),
                    ]
        
    7、项目流程
        - 先输入url
        - 去Django的urls中匹配urlpatterns->匹配上调用后面匹配的函数->去找对应的函数
        - 找到执行的函数->Django调用要执行的函数给函数传一个request参数,所有和请求相关的数据 都在request中
        - render去templates文件夹找到HTML文件,打开读取内容,按照http响应格式给浏览器返回读取的内容
        - 浏览器收到Django返回的响应消息,按照HTML格式显示这个消息
    
    
    
    其他:
        - from django.shortcuts import HttpResponse, render
            - HttpResponse (封装了协议头等-有待商议)
            - render (渲染)
    
        - 文件的上传(form表单的提交, 必须用POST)
            def index(request):
                print(request.GET)
                print(request.POST)
                print(request.FILES)
    
                for item in request.FILES:
                    fileobj = request.FILES.get(item)
                    f = open('upload/%s' % fileobj.name, 'wb')
                    item_file = fileobj.chunks()
                    for line in item_file:
                        f.write(line)
                    f.close()
    
                return HttpResponse("成功")
         - form表单上传文件时需要注意的事情
             - action 最后加 /  或者 修改settings:APPEND_SLASH=False
             - method 必须为post 
             - enctype = “multipart/form-data” 必须写
    
         - 指定IP登录
             默认IP和端口
                python manage.py runserver
            指定端口:
                python manage.py runserver 192.168.12.12:8080
            此时会报错,我们需要修改配置文件:
            修改settings.py,将192.168.12.12添加到ALLOWED_HOSTS中
            ALLOWED_HOSTS=['172.31.169.182','127.0.0.1','192.168.1.50','192.168.1.115']
            也可以将ALLOWED_HOSTS改成通配符 *
            ALLOWED_HOSTS = ["*"]
    
    
    
    二、
    
    1、表单的提交(登录)
        - submit -> action -> 对应函数(参数request(数据信息))-> 处理
            注意:必须要有name属性 *****
        - 提交到服务器的是QueryDict对象,可以通过get获取值
    
    
    2、form表单提交的三个要素
        - form标签必须有action和method属性
        - 所有获取用户输入的标签必须放在form表单中,必须有name属性
        - 必须有submit按钮
    
    
    3、redirect 跳转,改变方向
        - 跳转到别人的页面,自己的页面
            - 跳转比人页面
                redirect("https://baidu.com")
            - 跳转自己页面
                redirect("/相对路径/")
    
    4、Django必会三件套  from django.shortcuts import
        - HttpRequest    返回一个指定的字符串
        - render           返回一个HTML文件        HTML文件 模板语言
        - redirect        跳转                   路径     URL
    
    
    5、request相关属性
        - POST
        - GET
        - method
    
    6、Django的模板语言
        {{ 变量 }}
    
    7、Django项目project
        - app(应用) -> 不同的功能放在不同的app中
            - 命令 :
                - 创建app  
                    python manage.py startapp app01(应用名)    
                - 告诉Django创建了app
                    在settings中的 INSTALLED_APPS 添加新创建的app(app名.apps.apps中的类)
    
    
    8、程序链接mysql
        - 使用pymysql模块
            - 导入pymysql
            - 创建链接
            - 获取执行命令的游标
            - 用游标执行SQL语句
            - 获取SQL语句的执行结果
            - 关闭游标
            - 关闭链接
    
        - ORM - Object Relationship Mapping (对象关系映射)
        - 这时,创建一种工具 帮助我们翻译SQL语句(ORM - 面向对象的思想)
            - 优点
                - 开发效率高
                - 开发不用直接写SQL语句
            - 缺点
                - 执行效率低
    
        ORM         DB
    
        类            数据表
        属性            字段
        对象            数据行
    
    
    
    
    
        - Django项目project
            - app(应用) -> 不同的功能放在不同的app中
                - 命令 :
                    - 创建app  
                        python manage.py startapp app01(应用名)    
                    - 告诉Django创建了app
                        在settings中的 INSTALLED_APPS 添加新创建的app(app名.apps.apps中的类)
        - Django中ORM使用
            - 用处:
                - 操作数据表
                - 操作数据行
            - 使用
                - 手动创建数据库
                - 告诉Django连那个数据库
                    - settings中配置DATABASES
                    DATABASES = {
                        'default': {
                            'ENGINE': 'django.db.backends.mysql',  # 链接数据库的类型
                            'NAME': 'db',  # 链接数据库的名字
                            'HOST': '127.0.0.1',  # 数据库主机地址
                            'PORT': 3306,  # 数据库端口
                            'USER': 'root',  # 数据库用户名
                            'PASSWORD': '123456',  # 数据库密码
                        }
                    }
    
                - 用什么链接数据库?
                    - 利用第三方包 pymysql 和 MySQLdb(py2中)
                    - 告诉Django用pymysql模块代替默认的MySQLdb链接MySQL数据库
                        和settings.py同级的__init__.py文件,写上
                        import pymysql
                        pymysql.install_as_MySQLdb()
    
                - 在app/models.py的文件中创建类
                    类必须继承models.Model
    
                - 两个命令
                    - python manage.py makemigrations -> 相当于拿个小本本把models.py的变更记录下来
                    - python manage.py migrate -> 把上面的变更记录翻译成sql语句,去数据库执行
    
                - ORM查询
                    User.object.filter(email='', pwd='')
  • 相关阅读:
    MS SQL Server备份与恢复实例
    如何加快查询,优化数据库
    使用索引的误区之一:没有使用复合索引的前导列导致查询不使用索引
    URL重写可删节日期模式正则表达式之强力应用
    索引全攻略
    大数据量分页存储过程效率测试附代码
    形成查询结果(实体框架) 使用导航属性导航关系
    C#开源资源大汇总
    大数据量的系统的数据库结构如何设计?
    数据库查询优化
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/9595398.html
Copyright © 2011-2022 走看看