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. 代码部署工具walle(一)

    一.概述 代码部署上线.权限控制.一键版本回滚,github地址:https://github.com/meolu/walle-web walle是基于php语言做的,所以需要一个php的安装环境. ...

  2. MySQL问答整理

    1.Mysql中有哪些不同的表格? MyISAM: 基于IASM代码.可以被压缩,支持全文搜索,事务不安全,而且也不支持外键.如果事务回滚将会造成不完全回滚,从而不具备原子性.所以假如忽略事务以及访问 ...

  3. FFmpeg开发环境构建

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10035365.html 1. 相关资源介绍 本文主要讲述 linux 平台 x86(及x ...

  4. Quartz2D指定显示范围

    在qq中,可以看到头像是圆形显示的,通过CGContextClip可以设置 CGContextRef context=UIGraphicsGetCurrentContext(); CGContextA ...

  5. 【MongoDB学习-在.NET中的简单操作】

    1.新建MVC项目, 管理NuGet包,进入下载MongDB.net库文件 2.新增项目DAL数据访问层,引用以下库文件: 3.C# 访问MongoDB通用方法类: using MongoDB.Dri ...

  6. weex stream 之fetch的get、post获取Json数据

    无论何种平台,网络数据的获取都是十分重要的,最近学习weex,不可避免的要学习weex的数据请求方法了.网址 个人感觉,weex stream相较于其他平台,还算比较简单了,但是由于文档以及官方代码中 ...

  7. maven的注意点

    一.dependency的scope 取值范围:compile.test.runtime.provided.system compile 默认就是compile,什么都不配置也就是意味着compile ...

  8. java图片压缩(Thumbnails)

    package com.hzxc.groupactivity.server.util; import java.awt.image.BufferedImage; import java.io.*; i ...

  9. springboot —— 多数据源

    本文主要介绍如何在一个springboot项目配置两个数据源(mysql和oracle): 1.引进相关依赖 <!-- https://mvnrepository.com/artifact/my ...

  10. WebForms开发方式以及优缺点,来源《ASP.NET MVC企业级实战》

    WebForms有以下3种开发方式 1.服务器端控件 2.一般处理程序+HTML静态页+Ajax 3.一般处理程序+HTML模板 WebForms的请求的是具体的某一个文件.具体的一个类,由客户端发送 ...