Django笔记1

一、django有关的所有命令

  • django的安装

      pip install django==2.2
      
      pip install -i yuan django==2.2
    
  • 创建项目

    • django-admin startproject 项目名
    • 通过manage.py 执行
  • 创建app

    • python manage.py startapp app01
  • 启动项目

  • 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

  • 数据库相关

    • python manage.py makemigrations #记录modeles的变化,将变更记录记录到对应的APP下的migrations
    • python manage.py migrate #翻译sql语句,去数据库执行

二、配置settings.py

  • 数据库相关
    EGNIGE: 引擎 mysql sqllite3
    NAME: 数据库名字
    HOST: IP
    PORT: 端口号 3306
    USER: 用户名
    PASSWORD: 密码

  • 静态文件
    STATIC_URL = ’static’ #别名

STATICFILES_DIRS = [
os.path.join(BASE_DIR,’static’),
]

  • APP
    INSTALLED_APPS = [
    ‘app01.apps.App01Config’, #告诉django 自己创建了一个名叫app01的应用
    # ‘app01’
    ]

  • CARE
    注释csrf中间件, from表单可以提交post请求
    'django.middleware.csrf.CsrfViewMiddleware’,

三、ORM的对应关系

类 — 》数据表
对象 -》数据行
属性 —》字段

四、django使用mysql数据库步骤:

1.手动创建mysql数据库
2.在settings中配置
 DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysite',
        'HOST': '47.101.42.0',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123456',
            }
        }
 3、告诉django使用pymsql连接数据库
   在与settings.py文件同级的目录下的__init__.py 文件中引用
import pymysql
pymysql.install_as_MySQLdb()
4、models.py写类(继承models.Mode())
class User(models.Model):
    id = models.AutoField(primary_key=True) #id 自增主键
    email = models.CharField(max_length=32) #varchar(32)
    pwd =models.CharField(max_length=32)
#出版社
class Press(models.Model):
    id = models.AutoField(primary_key=True)  #id
    name = models.CharField(max_length=32) #出版社名称

    def __str__(self):
        return self.name



#书
class Book(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=40)  #书名称
    #to 关联的表名
    # django 2.0之后指定on_delete
    press = models.ForeignKey(to='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') #OM自动关联书籍表id

    def __str__(self):
        return self.name

5、执行命令:

python manage.py makemigrations
python manage.py migrate 

五、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

多对多:
author_obj.books ——》 管理对象
author_obj.books.all() ——》作者关联的所有书籍对象

2、增加:

Press.objects.create(name=‘出版社’)
Book.objects.create(title=’书名’, press_id=press_id)
Book.objects.create(title=book_title, press_id=press_id)

author_obj = Author.objects.create(name=‘作者名’)
author_obj.books.set(book_ids) # 参数是书籍id值的列表

3、删除

book_obj.delete() —— 》 删除单个对象

Press.objects.filter(条件).delete() ——》 删多个对象
Press.objects.filter(id=delete_id).delete()

4、编辑

#2.2 修改出版社名称
edit_press_obj.name = new_name
#2.3 修改后数据同步
edit_press_obj.save()

多对多编辑
#去数据库修改
edit_author_obj.name = new_author_name
edit_author_obj.save()
#修改关系表
edit_author_obj.books.set(new_book_ids)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值