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判断


原文地址:https://www.cnblogs.com/PythonMrChu/p/10065576.html