Django有关的所有命令

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])

 

posted @ 2018-10-08 16:22  ALADL  阅读(248)  评论(0编辑  收藏  举报