• python之django基础


    看了不是同一期的视频,发现9期老师线性引入的方式,讲得django更加易于理解掌握。

    抱歉的是,笔记没有整理就发上来了。希望看到的人不要被我带偏。

    
    
    1. 新建Django项目
    命令行创建:
    django-admin startproject mysite
    pycharm创建:
    1. File --> New project --> 左侧选Django --> 右侧填项目路径,并且勾选python.exe

    2. 设置Django项目:
    1. settings.py
    1. 配置HTML文件存放的位置
    2. 配置静态文件存放的位置

    3. ''' 配置Django项目   settings.py文件 
      1. templates文件夹的位置
      2. 静态文件
        1. STATIC_URL --> 静态文件夹的别名(在HTML文件中用的)
        2. STATICFILES_DIRS --> 静态文件夹的真正路径
      3. 注释掉 csrf 相关的中间件
      4. Django项目连接的数据库信息
      5. python3 manage.py startapp crm 用来创建APP

    4. Django WEB请求流程(简版)
      1. 启动Django项目,等待用户连接
      2. 浏览器在地址栏输入URL,来连接我的Django项目
      3. 在urls.py中 找 路径和函数的 对应关系
      4. 执行对应的函数
      5. 返回响应

    5. views.py
        1. 专门用来定义处理请求的函数
          基本必备三件套 from django.shortcuts import HttpResponse, render, redirect
          1. HttpResponse("要返回的内容") --> 通常用于直接返回数据
          2. render(request, "html文件", {"k1": v1}) --> 返回一个HTML文件或者打开文件进行字符串替换
          3. redirect("URL") --> 告诉用户的浏览器去访问其他的URL
        2. request相关
          1. request.method --> 查看请求的方法
          2. request.POST --> 获取POST请求的数据
           6. ORM使用 1. 什么是ORM? 是一种编程的方法论(模型), 和语言无关.(其他的语言也有类似的实现.) 2. ORM的本质: 类 ---> 数据表 对象 ---> 数据行 属性 ---> 字段 按照规定的语法写,自动翻译成对应的SQL语句. 3. ORM的功能: ORM操作数据表 ORM操作数据行 4. Django里ORM的使用: 1. 手动创建空数据库,不必建表 ( 本例:day62 ) 2. 在settings.py里面,配置数据库的连接信息 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'day62', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': '123456', } } 3. 在项目(项目名称,不是APP名称)下的 /__init__.py告诉Django用pymysql模块代替MySQLdb来连接MySQL数据库 import pymysql pymysql.install_as_MySQLdb() 4. 在app/models.py里面定义类 # 出版社 class Publisher(models.Model): id = models.AutoField(primary_key=True) # 自增的ID主键 # 创建一个varchar(64)的唯一的不为空的字段 name = models.CharField(max_length=64, null=False, unique=True) 5. 执行两个命令 1. python3 manage.py makemigrations --> 把models.py里面的更改记录到小本本上 2. python3 manage.py migrate --> 把更改翻译成SQL语句,去数据库执行
    '''

    直接从一个小项目“图书管理”结合,学习django. 顺便学习了一点 bootstrap3

    依次是设置settings.py 连接数据库、创建APP后在models.py编写ORM,  在urls.py设置与函数的对应关系, 应用下的views.py中编写响应函数,在templates下面编写模板html文件。

    启动服务,浏览器访问测试等。然后再不断增加、修改、循环往复,直到完成。

     直接将project打包了。点此下载:django图书管理练习

     

    # pip3 install django==1.11.13
    
    ### manage.py 文件及所有项目由命令生成。
    # 与项目进行交互的命令行工具集的入口
    # 项目管理器   python3 manage.py  # 查看所有命令
    
    # cmd命令行下:
    
    #  D:Python3>Django-admin startproject myblog
    
    # python3 manage.py runserver  # 启动web服务  访问 http://localhost:8000/ 查看web服务是否可用 It worked!
    
    # python3 manage.py runserver 9999  # 也可以指定端口启动web服务 或 监听所有IP  python3 manage.py runserver 0.0.0.0:8001
    
    ## 子目录myblog是项目目录,不建议修改名称。
    
    # wsgi.py  # 即python服务器网关接口(python Web Server Gateway Interface)
    # python应用与web服务器之间的接口  全程不会去改动它。
    
    # urls.py  # URL配置文件 项目中所有地址(页面)都需要我们自己去配置URL
    
    '''--------------------------------------------------------------------
     settings.py  # 整个项目最核心最重要的 总配置文件
       包含了数据库、web应用、时间等各种配置
    ------------------------------------------------------------------------'''
    
    ### 使用 python3 manage.py startapp blog 创建 blog 应用
    # 创建应用时避免和模块名冲突。
    # 将应用 blog 加入项目的 settings中INSTALLED_APPS下
    # 例如: 'blog.apps.BlogConfig',  
    """=========================================================================
    如果使用pycharm创建django项目的话,可以在创建时同时创建应用,
    且应用将自动加入 settings 中 INSTALLED_APPS 下
    ==========================================================================="""
    
    # blog 下的:
    #  migrations 数据迁移模块 涉及数据库操作 内容自动生成
    #  admin.py 该应用的后台管理系统配置
    #  apps.py  该应用的一些配置  django1.9以后自动生成
    #  models.py  数据模块 使用ORM框架  类似于MVC中的Models(模型)
    #  tests.py  自动化测试模块  django提供了自动化测试功能  在这里编写测试脚本
    
    # ### views.py  执行响应的代码  代码逻辑处理的主要地点  项目中的大部分代码均在这里编写
    #
    ''''''
    
    # 编辑 blog.views
    '''
        每个响应对应一个函数,函数必须返回一个响应
        函数必须存在一个参数,一般约定为request
        每一个响应(函数)对应一个URL
    '''
    
    # 编辑urls.py
    '''
        每个URL都以url的形式写出来
        url函数放在urlpatterns列表中
        url函数三个参数:URL(正则),对应方法,名称
    '''
    
    
    '''
    Models是什么?
        通常,一个Model对应数据库的一张表,Django的models以 类 的形式表现,它包含了一些基本字段以及数据的一些行为。
    ORM 对象关系映射(Object Relation Mapping) 实现了对象和数据库之间的映射。
        隐藏了数据访问的细节,不需要编写SQL语句
    
    编写Modles
    在应用根目录下创建models.py, 引入models模块
    创建类,继承models.Model 该类即是一张数据表
    在类中创建字段 :
        字段即类里的属性(变量)
        attr = models.CharField(max_length=64)
        官网:https://docs.djangoproject.com/en/1.11/ref/models/fields/
        
    生成数据表:
        命令行进入manage.py所在目录
        执行 python manage.py makemigrations [可选参数 app名]
        再执行 python manage.py migrate
        其实就是settings.py中的 INSTALLED_APPS 中的应用所对应的数据 
        如果没有指定主键,则django会自动加上id列,int型,主键,自动增长。
        
        利用 python manage.py sqlmigrate 应用名 文件id  可查看SQL语句
        python manage.py sqlmigrate blog 0001
        
        查看数据库可用sqlite expert 或者 Navicat 
    
    页面呈现数据: 
        views.py中import models
        article = models.Article.objects.get(pk=1)
        return render(request,page,{"article":"article"})  
        前端步骤:
            模板可直接使用对象以及对象的"."操作
            {{article.title}}
        
    '''

    如果linux环境,则:

    """
    这个笔记不是9期的.
    
    CentOS6.5下安装pip 
    在已有python2.7的基础上:
    1. 下载setuptools及pip的源码包
    > wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
    > python ez_setup.py --insecure
    
    2. 下载并安装pip
    wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9 --no-check-certificate
    
    tar zxvf pip-9.0.1.tar.gz
    cd pip-9.0.1
    python setup.py install
    后面安装django使用pip即可
    """

    web框架的本质:

    1. web框架的本质:
    			socket服务端  与 浏览器的通信
    		2. socket服务端功能划分:
    			a. 负责与浏览器收发消息(socket通信)  --> wsgiref/uWsgi/gunicorn...
    			
    			b. 根据用户访问不同的路径执行不同的函数
    			
    			c. 从HTML读取出内容,并且完成字符串的替换  --> jinja2(模板语言)
    			
    		3. Python中 Web框架的分类:
    			
    			1. 按上面三个功能划分:
    				1. 框架自带a,b,c                 --> Tornado
    				2. 框架自带b和c,使用第三方的a    --> Django
    				3. 框架自带b,使用第三方的a和c    --> Flask
    			2. 按另一个维度来划分:
    				1. Django   --> 大而全(你做一个网站能用到的它都有)
    				2. 其他     --> Flask 轻量级
  • 相关阅读:
    【Codeforces 429D】 Tricky Function
    【HDU 1007】 Quoit Design
    S3C2440开发环境搭建(Ubuntu)
    ubuntu 14.04使用root登陆出现错误“Error found when loading /root/.profile”解决
    Ubuntu 14.04下NFS安装配置
    gcc及其选项详解
    class_create(),class_device_create()创建/dev/xxx 名字
    class_create(),device_create自动创建设备文件结点
    ZedGraph 总论
    ZedGraph类库之基本教程篇
  • 原文地址:https://www.cnblogs.com/frx9527/p/python_django1.html
Copyright © 2020-2023  润新知