• Django表的多对一关系


    1.Django的命令
    
    1. 安装Django
       pip install django==1.11.16
       pip install django==1.11.16 -i   源
    2. 创建项目
       django-admin startproject 项目名称
    3. 启动项目
       cd 项目目录下  有manage.py 
       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
    4. 创建APP
       python manage.py startapp app名称  
    5. 数据库迁移的命令
       1. python manage.py makemigrations   # 记录models的变更记录  
       2. python manage.py migrate   # 把变更记录同步到数据库中
    
    2.Django的settings配置
    
    1. 静态文件
       STATIC_URL = '/static/'   # 别名
       STATICFILES_DIRS = [
           os.path.join(BASE_DIR,'static'),
           os.path.join(BASE_DIR,'static1'),
       ]
       1. 数据库
       ENGINE:    mysql
       NAME:   数据库名字
       USER:    用户名
       PASSWORD: 密码   ‘’
       HOST:   IP地址  127.0.0.1  
       PORT:      3306      
       1. 注释CSRF的中间件
       可以提交POST请求
       1. TEMPLATES   模板文件
       DIRS   [os.path.join(BASE_DIR,'templates')] 
       1. INSTALLED_APPS =[
       'app01'   或者  ‘app01.apps.App01Config’
    
    3.get和post
    
    1. get   ——获取一个页面
       浏览器地址栏中输入地址,回车  
       a标签 
       form表单默认发送get请求  
       携带参数:127.0.0.1:8000/edit_publisher/?pk=1
       request.GET   {} 
       1. post  ——提交数据
       form表单指定method=‘post’ 
       request.POST
    
    4.使用mysql数据库的流程
    
    1. 创建一个mysql数据库
    2. 在settings中配置:
           DATABASES = {
               'default': {
                   'ENGINE': 'django.db.backends.mysql',
                   'NAME': 'bookmanager',
                   'HOST': '127.0.0.1',
                   'PORT': 3306,
                   'USER': 'root',
                   'PASSWORD': '',
           
               }
           }
    3. 告诉Django使用pymysql模块连接mysql数据库
       在与settings同级目录下__init__.py中写:
           import pymysql
           pymysql.install_as_MySQLdb()
    4. 在app下的models中写类(继承models.Model)
           class Publisher(models.Model):  # app01_publisher
               pid = models.AutoField(primary_key=True)  # pid 主键
               name = models.CharField(max_length=32, unique=True) # 出版社名称 varcahr(32)
    5. 执行数据库迁移的命令
       1. python manage.py makemigrations   # 记录models的变更记录  
       2. python manage.py migrate   # 把变更记录同步到数据库中
    
    5.ORM操作
    
    对应关系:
    
        类   ——》   表
    
        对象  ——》  数据行(记录)
    
        属性 ——》   字段
    
    from app01 import models
    
    增加:
    
        models.Publisher.objects.create(name='xx出版社')
    
    查询:
    
        models.Publisher.objects.get(name='xx出版社')   ——》 一个对象
    
        models.Publisher.objects.filter(name='xx出版社')  ——》 一个对象列表
    
        models.Publisher.objects.all()  ——》 一个对象列表  所有数据的对象
    
    删除:
    
        models.Publisher.objects.get(name='xx出版社') .delete()
    
        models.Publisher.objects.all() .delete()
    
    修改:
    
        obj=models.Publisher.objects.get(name='xx出版社')
    
        obj.name = '新的名字'   # 在内存中做修改
    
        obj.save()   # 保存在数据库中
    
    6.模板的语法
    
        render(request,'模板的文件名',{'new_name':'新华出版社''errr_msg':'数据已存在'})
    
    1. 变量  
       {{ new_name  }}   ——》 新华出版社
       1. for循环
       {%  for i in 可迭代的 %}
           {{ forloop.counter }}    循环的次数
           {{ i }}
           {{ i.name }}
           {{ i.pk}}
       {% endfor %}
    
    
    1.书籍的管理
    
    书籍和出版社    多对一  
    
    书籍的表结构
    
    id     name    
    
    创建外键:
    
        class Book(models.Model):
            title = models.CharField(max_length=32, unique=True)  # 书籍的名称
            publisher = models.ForeignKey('Publisher', on_delete=models.CASCADE)  # 关联了出版社
    
    
    
    
    查询:
    
        
    
    新增:
    
    
    
    编辑:



    模板语法: if判断


  • 相关阅读:
    两个51相互之间单片机如何进行串口通信
    (stm32f103学习总结)—stm32pwm
    (stm32f103学习总结)—stm32 PMW输出实验
    cpu指令如何读写硬盘
    线程进程同步
    stm32+lwip
    opc
    open62541-server编程
    linux 下time函数
    close与shutdown
  • 原文地址:https://www.cnblogs.com/PythonMrChu/p/10065576.html
Copyright © 2020-2023  润新知