python全栈开发day64-模板-变量和(.)的使用,filters和自定义filter

一、上周内容回顾

  

day64
内容回顾:
    1. 所有的django命令
        1. 安装
            pip install django==1.11.14
            pip install -i 源 django==1.11.14
        2. 创建项目
            django-admin startproject 项目名称
        3. 启动项目
            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 app01
        5. 数据库迁移
            Python manage.py makemigrations    # 将models的变化记录下来 
            python manage.py migrate            # 将变更更新到数据库当中
        
    2. 配置
        1. 静态文件
            STIATIC_URL = '/static/'     # 别名
            STIATICFILES_DIRS = [
                os.path.join(BASE_DIR,'static'),
            ]
        2. 注释csrf中间件   
        3. TEMPLATES  DIRS  os.path.join(BASE_DIR,'teamplates')
        4. DATABASES    
        5. INSTALLED_APPS =[
            'app01'   或者 'app01.apps.App01Config' 
         ]
    3. ORM类和数据库对应关系
            类   ——》 数据表
            对象 ——》 数据行
            属性 ——》 字段
    4. django使用mysql数据的流程
        1. 创建mysql的数据库
        2. 配置
            ENGINE: mysql
            NAME: 数据库名字
            HOST: ip地址
            PORT:3306
            USER: 用户名
            PASSWORD: 密码
        3. 告诉django使用pymysql模块连接你的mysql数据库
            在与项目同名文件夹下的__init__.py文件写:
                import pymysql
                pymysql.install_as_MySQLdb()
        4. 在app01下的models.py中写类(必须继承models.Model):
            class Publisher(models.Model):
                id = models.AutoField(primary_key=True)
                name = models.CharField(max_length=32, null=False, unique=True)
                addr = models.CharField(max_length=128, null=False)

                def __str__(self):
                    return "< Publisher object: {}>".format(self.name)


            class Book(models.Model):
                id = models.AutoField(primary_key=True)
                title = models.CharField(max_length=32, null=False, unique=True)
                publisher = models.ForeignKey(to='Publisher', on_delete=models.CASCADE)

                def __str__(self):
                    return "< Publisher object: {}>".format(self.title)


            class Author(models.Model):
                id = models.AutoField(primary_key=True)
                name = models.CharField(max_length=32, null=False, unique=True)
                books = models.ManyToManyField(to='Book')    
                
        5. 执行数据库迁移的命令
            Python manage.py makemigrations
            python manage.py migrate
    5.ORM操作
        1. 查
            models.Publisher.objects.all()        # 查询所有的出版社对象的集合
            models.Publisher.objects.get(id=1,nam='sss)   # 查询指定的满足条件的对象     ——》一个对象 
            models.Publisher.objects.filter(id=1,name='sss')  # 查询满足条件的所有对象      ——》 对象列表
            models.Publisher.objects.all().order_by('id')    # 排序
            
            属性:
                无外键、多对多:
                    pub_obj.id 
                    pub_obj.name
                外键:
                    book_obj.id
                    book_obj.name
                    book_obj.publisher   ——》book所关联的出版社对象
                    book_obj.publisher.id 
                    book_obj.publisher_id
                多对多:
                    author_obj.id
                    author_obj.name
                    author_obj.books        ——》django封装的管理对象
                    author_obj.books.all()    ——》 拿到作者管理的所有书籍的对象列表
        2. 增
            models.Publisher.objects.create(name='新的出版社')
            外键:
                models.Bookj.objects.create(name='新的书名',publisher_id=1)
                models.Bookj.objects.create(name='新的书名',publisher=pub_obj)
            多对多:
                autho_obj = models.Author.objects.create(name='新的作者')
                autho_obj.books.set([1,2])
                
        3. 删
            models.Publisher.objects.get(id=1).delele()      
            models.Publisher.objects.filter(name='xxx').delele()
        4. 改
            pub_obj.name = '新的名字'
            pub_obj.save() 
            
            外键:
                book_obj.name = '新的书名'
                book_obj.publisher = pub_obj
                # book_obj.publisher_id = pub_obj.id 
                book_obj.save()
                
            多对多:
                author_obj.name='新的作者名'
                author_obj.save()
                author_obj.books.set([1,2,3])
                
        
        
    6. request    ——》 封装了请求所有的内容
        request.method   ——》请求方式 GET POST 
        request.GET      ——》 URL上面传参数 127.0.0.1:8000/del_book/?id=1&name='xx'
                        字典形式     request.GET['id']    request.GET.get('id')
        request.POST     ——》POST请求提交的数据 字典
                    request.POST['id']    request.POST.get('id')    
                    
    7. 函数的返回值         ——》必须是HttpResponse对象
        HttpResponse('字符串')        ——》页面显示字符串的内容
        render(request,'HTML文件名',{k1:v1,})    ——》将字典的内容交给模板渲染成HTML 返回给浏览器
        redirect('/index/')        跳转 重定向 ——》返回一个响应头 Location:/index/
    
    
        
1.今日内容:
    1. django的模板:
        1. 已经学的内容:
            {{ 变量 }} 
            for 循环
            {% for name in name_list %}
                {{ name }}
                {{ forloop.counter }}
                {{ forloop.last }}
            {% endfor %}
            
            if判断
            {% if 10>5 %}
                操作
            {% endif %}
            
            {% if 10>5 %}
                操作
            {% else %}
                条件不成立的操作
            {% endif %}
            
            
            {% if 10>5 %}
                操作
            {% elif 10>5 %}
                elif成立时的操作
            {% else %}
                条件不成立的操作
            {% endif %}
        2. 今天新的内容
            1. 变量及(.)的使用
            2. filters
            3. 自定义filter
        
        
        
        
        
上周内容回顾

二、今日内容总结

1.变量和(.)的使用:

  

2.filters

 

3.自定义filter

猜你喜欢

转载自www.cnblogs.com/wuchenggong/p/9390557.html
今日推荐