复习

day68

内容回顾(赵导专场)
    1. ORM已经的学过的内容:
        1. Django项目如何使用ORM连接MySQL
            1. 手动创建数据库
            2. 在settings.py里面配置一下数据库的连接信息(告诉Django连接哪一个数据库)
                DATABASES = {
                    'default': {
                        'ENGINE': 'django.db.backends.mysql',  # 连接数据库的类型
                        'NAME': 'day62xiawu',  # 数据库名字
                        'HOST': '127.0.0.1',  # IP
                        'PORT': 3306,  # 端口
                        'USER': 'root',  # 用户名
                        'PASSWORD': '123456',  # 密码
                    }
                }
            3. 在和settings.py同目录下的__init__.py文件中,告诉Django用pymysql代替MySQLdb来连接数据库
                import pymysql
                pymysql.install_as_MySQLdb()
            4. 在app/models.py中,定义类,类一定要继承models.Model
                class Book(models.Model):
                    id = models.AutoField(primary_key=True)
                    title = models.CharField(max_length=32)
            5. 执行两条命令
                1. 在哪儿执行?
                    在项目的根目录(有manage.py文件的那个目录)
                2. 命令
                    python manage.py makemigrations   --> 将models.py文件中的改动记录在小本本(app/migrations/00xx_****.py)上
                    
                    python manage.py migrate           --> 将改动翻译成SQL语句,去数据库中执行
        2. 表和表之间的关系
                         这是Django内置的models模块  在models.py中
            1. 一对多(出版社和书)
                publisher = models.ForeignKey(to="Publisher")
                
                在数据库中:
                    有没有publisher这个字段?
                    数据库中实际 生成的是一个 publisher_id 字段
                
            2. 多对多(作者和书)
                books = models.ManyToManyField(to="Book")
                
                在数据库中:
                    是通过第三张表建立的关系
 
        3. 增删改查操作
                        这是自己写类的models模块   from app01 import models
            1. 单表增删改查
                增:
                    models.Publisher.objects.create(name="沙河出版社")
                查:
                    models.Publisher.objects.get(id=1)
                    models.Publisher.objects.get(name="沙河出版社")
                删:
                    models.Publisher.objects.get(id=1).delete()
                改:
                    obj = models.Publisher.objects.get(id=1)
                    obj.name = "沙河第二出版社"
                    obj.save()
            2. 外键的增删改查
                增、删、查同上
                
                book_obj = models.Book.objects.get(id=1)
                
                book_obj.publisher 是什么?    *****
                    和我这本书关联的出版社对象
                    
                    book_obj.publisher.id    和我这本书关联的出版社的id值
                    book_obj.publisher.name  和我这本书关联的出版社的名称
                    
                book_obj.publisher_id 是什么?
                    和我这本书关联的出版社的id值
                    
            3. 多对多操作
                
                1. 查id为1的作者都写过的书?
                    author_obj = models.Author.objects.get(id=1)
                    author_obj.books.all()     --> 和我这个作者关联的所有书对象
                2. 想给作者绑定多本书?
                    author_obj = models.Author.objects.get(id=1)
                    author_obj.books.set([1,2,3]) --> 把id是1、2、3的书和我这个作者关联上

正则复习

 1 import re
 2 
 3 r = re.compile(r'^delete/([a-zA-Z]+)/(d+)/$')
 4 
 5 ret = r.match("delete/author/10/")
 6 
 7 print(ret)  # <_sre.SRE_Match object; span=(0, 17), match='delete/author/10/'>
 8 
 9 print(ret.groups())  # groups
10 
11 print(ret.group(1))  # group

执行结果:

<_sre.SRE_Match object; span=(0, 17), match='delete/author/10/'>
('author', '10')
author

Process finished with exit code 0

反射复习

 1 # '''
 2 # 反射
 3 # '''
 4 #
 5 import sys
 6 
 7 class Person(object):
 8     def __init__(self, name):
 9         self.name = name
10 
11     def eat(self, food):
12         print("{} 在吃 {}".format(self.name, food))
13 
14     def dream(self):
15         print("{} 在做白日梦!".format(self.name))
16 
17 
18 s = "person"
19 
20 
21 # 打印当前可用的变量
22 print(locals()["s"])
23 print(locals().get("s"))
24 print("="*10)
25 # 字符串首字母大写
26 s = s.capitalize()
27 print(s, type(s))
28 
29 # 反射
30 if hasattr(sys.modules[__name__], s):
31     print("找到了")
32     the_class = getattr(sys.modules[__name__], s)
33     print(the_class)
34     obj = the_class("包子")
35     obj.eat("")

执行结果:

person
person
==========
Person <class 'str'>
找到了
<class '__main__.Person'>
包子 在吃 馅

Process finished with exit code 0

时间间隔

 1 """
 2 时间间隔
 3 """
 4 
 5 import datetime
 6 
 7 
 8 now = datetime.datetime.now()  # 你领了一张有效期为7天的优惠券
 9 print(now)
10 # 时间间隔
11 d7 = datetime.timedelta(days=7)
12 # 求失效时间
13 ret = now + d7
14 print(ret)

执行结果:

2019-02-27 14:57:33.425870
2019-03-06 14:57:33.425870

Process finished with exit code 0

复习反向解析(day68orm)

点击页面的index后

 

原文地址:https://www.cnblogs.com/112358nizhipeng/p/10434272.html