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. offsetTop、offsetLeft、offsetWidth、offsetHeight的用法

    假设 obj 为某个 HTML 控件. obj.offsetTop 指 obj 相对于版面或由 offsetParent 属性指定的父坐标的计算上侧位置,整型,单位像素. obj.offsetLeft ...

  2. 简单实现Spring框架--注解版

    自己写的Spring框架——简单实现IoC容器功能 前几天在网上看了篇帖子,是用xml的方式实现spring的ioc容器,觉得挺有意思的,这边自己试着用注解的形式造了一套轮子. 工程结构 codein ...

  3. set集合容器(常用的使用方法总结)

     关于C++STL中set集合容器的学习,看别人的代码一百遍,不如自己动手写一遍. 构造set集合容器的目的是为了去重+排序+快速搜索.由于set集合容器实现了红黑树多的平衡二叉检索树的数据结构,在插 ...

  4. 以ORM的思路来从Excel文件中读取JSON数据列表

    1.一个常见的问题就是如何读取excel. 这里面有几个分支的问题,一个是如何使用poi读取excel,网上例子很多,但是这只解决了第一步.如何将excel读取入一定的数据结构这是第二个问题,还有就是 ...

  5. C# ABP - 创建自己的模块

    本篇文章介绍怎么创建自己的模块,并且使用依赖注入方法进行模块间的无缝结合. 我们创建一下自己的一个会员模块,针对不同的系统都可以用.你们可以看看我是怎么做的,或者从中得到启发. 目录 1.开始创建项目 ...

  6. net 反射30分钟速成

    概述 什么是反射 Reflection,中文翻译为反射.        这是.Net中获取运行时类型信息的方式,.Net的应用程序由几个部分:‘程序集(Assembly)’.‘模块(Module)’. ...

  7. LINQ to Objects系列(2)两种查询语法介绍

    LINQ为我们提供了两种查询语法,分别是查询表达式和查询方法语法.这篇文章分为以下几个方面进行总结. 1,一个包含两种查询语法的简单示例 2,查询表达式的结构 3,查询方法相关的运算符 一个包含两种查 ...

  8. Android-Activity启动流程

    http://www.jianshu.com/p/6037f6fda285 zygote是什么?有什么作用? zygote意为“受精卵“. 在Android系统里面,zygote是一个进程的名字.An ...

  9. HUST1017(KB3-A Dancing links)

    1017 - Exact cover Time Limit: 15s Memory Limit: 128MB Special Judge Submissions: 7270 Solved: 3754 ...

  10. 2016计蒜之道复赛 百度地图的实时路况(Floyd 分治)

    题意 题目链接 Sol 首先一个结论:floyd算法的正确性与最外层\(k\)的顺序无关(只要保证是排列即可) 我大概想到一种证明方式就是把最短路树上的链拿出来,不论怎样枚举都会合并其中的两段,所以正 ...