1. Django的安装

  pip install django ==1.11.11

  pip install -i yuan django==1.11.11

2. 创建项目

  django-admin startproject  项目名

通过manage.py执行

CD项目目录下

3.创建APP

  python manage.py startapp app01

4. 启动项目

  python manage.py runserver # 127.0.0.1:8000

  python manage.py runserver 80 # 127.0.0.1:80

  python manage.py runserver 0.0.0.0: 80 # 0.0.0.0:80

5. 数据库相关

  python manage.py makemigrations # 记录modeles 的变化,将变更记录到 对应APP 下的 migrations

  python manage.py migrate  # 翻译成SQL语句,去数据库执行

-------------------------------------------------------------我是下划线-----------------------------------------------------

配置settings.py

1. 数据库相关

  EGNIGE:  引擎 mysql sqllite3

  NAME:   数据库名字

  HOST:   IP

  POST:    端口号 3306

  USER:   用户名

  PASSWORD:  密码      ‘ ’

2. 静态文件相关

  STATIC_URL= ‘static’  # 别名

  STATICFILES_DIRS = [

  os.path.join(BASE_DIR,'STATIC'),  

]

3. APP

  INSTALLED_APPS = [

  'app01.apps.App01Config',    #告诉 Django我自己新建了一个名叫app01的应用

  # ‘app01’

]

4. CSRF

  注释掉CSRF中间件   form表单可以提交POST请求

5. TEMPLATES

  'DIRS':[os.path.join(BASE_DIR,'TEMPLATES')]

----------------------------------------------------------我是下划线--------------------------------------------------------

ORM的对应关系

  类    --------  数据表

  对象   --------  数据行

  属性   --------  字段

-----------------------------------------------------我是下划线------------------------------------------------------

Django使用mysql数据库的步骤:

  1.手动创建mysql数据库

  2. 在settings.py中配置:

    DATABASES = {

        'default':{

          'ENGINE': 'django.db.background.mysql',  # 连接数据库的类型

          'NAME': 'mysite'  # 数据库名

          'HOST': '127.0.0.1', # 数据库主机地址

          'POST':  3306   # 数据库的端口

          'USER': 'root',

          'PASSWORD': ' ',

          }

        }

  3. 告诉Django使用pymysql连接数据库

    在于settings.py 文件同级的目录下的__init__.py写代码:

      import pymysql

      pymysql.install_as_MySQLdb()

  4. 在models.py中写类(继承models.Model)

    class Press(models.Model):

      id = models.AutoField(primary_key=True)  # id主键

      name = models.CharField(max_length=32)  # 出版社名称

      

      def __str__(self):

        return '<这是一个出版社对象,它的名字是:{}>'.format(self.name)

      #   书

      class Book(models.Model):

        id = models.AutoField(primary_key=True)   #自增ID主键

        title= models.CharField(max_length=30)   # 书名

        price = models.IntegerField()        # 价格

        # Django 1.11 默认就是级联删除 , Django2.0 之后必须指定on_delete

        # to=关联的表名

        press =  models.ForeignKey('Press_on_delete=models.CASCADE')

      #  作者

      class  Author(models.Model):

        id = models.AutoField(primary_key=True)  # 自增ID主键

        name = models.CharField(max_length=32)  # 作者名字

        books = models.ManyToManyField(to='book') # 只是ORM层面建立的一个多对多关系,不是作者表的一个字段

        

        def __str__(self):

          return self.name

  5. 执行命名

    python manage.py makemigrations  # 记录models的变化,将变更记录到 对应APP下的migrations

    python manage.py migrate      #  翻译成SQL语句,去数据库执行

-----------------------------------------------------我是下划线--------------------------------------------------------

ORM操作

  1. 查:

    from app01.models import User,Press,Book,Author

    Press.objects.all()  # 查询所有出版社对象 ------  对象列表 queryset

    Press.objects.filter(条件)  # 查询所有满足条件的出版社对象  ------ 对象列表 queryset

    Press.objects.get(条件)    # 查询有且只能有一个对象  没有或者多个都报错 ---- 对象

    

    属性:

      press_obj.id

      press_obj.name

    外键:

      book_obj.id

      book_obj.title

      book_obj.press    -------关联的对象

      book_obj.press_id    -------数据库中的关联对象的ID

      book_obj.press.id

    多对多:

      author——obj.books   ------管理对象

      author_obj.books.all() ------作者关联的所有书籍对象

  2. 增加:

    new_obj = Press.objects.create(name='新的出版社')

    Book.objects.create(title='书名',price = 15,press=press_obj)

    Book.objects.create(title='书名',price=15,press_id=press_obj.id)

  

    new_obj = Author.objects.create(name='作者名')

    new_obj.books.set([1,2,3])

    new_obj.books.set([book1,book2])

    new_obj.books.add(1,2,3)

  3. 删除

    book_obj.delete()   ------删除单个对象

    Press.objects,filter(条件).delete()   -------删多个对象

  4. 编辑

    press_obj.name = '新的出版社名字'

    press_obj.save()

    

    book_obj.press = press_obj

    # book_obj.press_id = press_obj.id

    book_obj.save()

    author_obj.name = '作者名'
    author_obj.save()

    

    author_obj.books.set([1,2,3])

Django有关的所有命令的更多相关文章

  1. Django 之 流程和命令行工具

    一.一个简单的web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所 ...

  2. python后台架构Django教程——manage.py命令

    一.manage.py命令选项 manage.py是每个Django项目中自动生成的一个用于管理项目的脚本文件,需要通过python命令执行.manage.py接受的是Django提供的内置命令. 内 ...

  3. Django中的syncdb命令

    从官方文档的意思来看,现在他已经成为migrate命令的同义词了,和migrate命令有相同的作用. Deprecated since version 1.7: This command has be ...

  4. Django扩展自定义manage命令

    使用django开发,对python manage.py ***命令模式肯定不会陌生.比较常用的有runserver,migrate... 本文讲述如何自定义扩展manage命令. 1.源码分析 ma ...

  5. django的流程和命令行工具

    django实现流程django #安装: pip3 install django 添加环境变量 #1 创建project django-admin startproject mysite ---my ...

  6. Django(三)runserver 命令源码分析

    应用环境 windows7 pycharm2018 profession python3.6 django2.0 我们在pycharm 启动django项目时,常常有这么一个命令操作: python ...

  7. 关于windows 7 安装Django和基本使用命令

    一.安装 在安装前需注意Django 1.6以前的版本不支持python 3.×以上的版本. Django 2.×支持python 3.6 安装方法:打开cmd->输入pip install - ...

  8. Django 2.x 常用命令

    从Pycharm换成VsCode,好多命令都不会,这里记一下. 创建 Django 项目 先进入到你想要创建 project 目录下,执行命令 django-admin startproject pr ...

  9. django实现自定义manage命令的扩展

    在Django开发过程中我们都用过django-admin.py和manage.py命令. django-admin.py是一个命令行工具,可以执行一些管理任务,比如创建Django项目.而manag ...

  10. 【AMAD】django-extensions -- Django框架的自定义命令扩展集合

    动机 简介 个人评分 动机 使用Django进行开发的时候,会不会感觉开发工具少了一些.比如每次进入python shell调试的时候要重新import每个model. 简介 django-exten ...

随机推荐

  1. 常见的加密解密算法-MD5

    一.MD5加密概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 13 ...

  2. SpringBoot学习(二)——Spring的Java配置方式

    Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置. 一.@Configuration 和 @Bean Spring的Java配置方式是通过@Configuration和@Bean ...

  3. 性能提速:debounce(防抖)、throttle(节流/限频)

    debounce与throttle是用户交互处理中常用到的性能提速方案,debounce用来实现防抖动,throttle用来实现节流(限频).那么这两个方法到底是什么(what)?为何要用(why-解 ...

  4. 并发编程之 CopyOnWriteArrayList 源码剖析

    前言 ArrayList 是一个不安全的容器,在多线程调用 add 方法的时候会出现 ArrayIndexOutOfBoundsException 异常,而 Vector 虽然安全,但由于其 add ...

  5. 高并发之 - 全局有序唯一id Snowflake 应用实战

    前言 本篇主要介绍高并发算法Snowflake是怎么应用到实战项目中的. 对于怎么理解Snowflake算法,大家可以从网上搜索‘Snowflake’,大量资源可供查看,这里就不一一详诉,这里主要介绍 ...

  6. Commonjs、AMD、CMD

    CommonJS 该规范的核心思想是允许模块通过 require 方法来同步加载所要依赖的其他模块,然后通过 exports 或 module.exports 来导出需要暴露的接口 require(& ...

  7. [日常] Go语言圣经--并发的循环习题

    练习 8.4: 修改reverb2服务器,在每一个连接中使用sync.WaitGroup来计数活跃的echo goroutine.当计数减为零时,关闭TCP连接的写入,像练习8.3中一样.验证一下你的 ...

  8. 数据结构与算法--最短路径之Dijkstra算法

    数据结构与算法--最短路径之Dijkstra算法 加权图中,我们很可能关心这样一个问题:从一个顶点到另一个顶点成本最小的路径.比如从成都到北京,途中还有好多城市,如何规划路线,能使总路程最小:或者我们 ...

  9. JAVA项目工具包集合

    本文包括工具的下载以及配置,持续更新中…… 1 JDK 官网:https://www.oracle.com 下载:https://www.oracle.com/technetwork/java/jav ...

  10. Spring Security(三)

    Spring Security(三) 个性化用户认证流程 自定义登录页面 在配置类中指定登录页面和接收登录的 url @Configuration public class BrowserSecuri ...