Django day02 应用 模板

目录

1.Django中的应用

    1.什么是应用

    2.创建应用

    3.应用的结构组成

    4.分布式路由系统

2.Django中的模板 

   1.什么是模板

    2.模板的设置

    3.模板的加载方式

    4.模板的语法

        1.变量

        2.标签


1.Django中的应用

    1.什么是应用

        应用就是网站中一个独立的模块程序
        在Django中,主目录一般不处理用户的具体请求,主目录主要做的是项目的初始化以及请求的分发,
        而具体的请求由各个应用去处理

    2.创建应用

        1.指令
            ./manage.py startapp 应用名称
            ex:    
                ./manage.py startapp news
        2.在 settings.py中进行注册
            在 INSTALLED_APPS中追加应用的名称    
            INSTALLED_APPS = [
                'django.contrib.admin',
                ... ...
                '自定义应用名称'
            ]
        3.练习
            1.创建新项目 - netease
            2.创建 index 应用,并注册
            3.创建 sport 应用,并注册
            4.创建 music 应用,并注册
            5.创建 news 应用,并注册

            终端输入
             tarena@tedu:~/Django/netease$  ./manage.py startapp music
            ...                        ...     ./manage.py startapp index
            ...                        ...     ./manage.py startapp news
            ...                        ...     ./manage.py startapp sport

            settings.py中
            INSTALLED_APPS = [
                'django.contrib.admin',
                ... ...
                'index',
                'sport',
                'music',
                'news',

    3.应用的结构组成

        1.migrations 目录
            存放的是数据库的中间文件
        2.__init__.py
            应用的初始化文件
        3.admin.py
            应用的后台管理配置文件
        4.apps.py
            应用的属性配置文件
        5.models.py
            Models 与模型相关的配置文件
        6.tests.py
            测试模块
        7.views.py
            定义视图的文件


    4.分布式路由系统

        # 交给 music 应用去处理(转交给music的urls)
        from django.conf.urls import include
        # url(r'^music/',include('music.urls'))
        http://localhost:8000/music/****
        # 交给 music 应用中的 index_views 视图去处理
        http://localhost:8000/music/index
        # 交给 sport 应用去处理(转交给sport的urls)
        http://localhost:8000/sport/****

        练习:
            1.访问路径 localhost:8000/news/index
                转交给 news的urls再找到index_views处理
            2.访问路径 localhost:8000/sport/index
                转交给 sport的urls再找到index_views处理
            3.访问路径 localhost:8000/index/index
                转交给 index的urls再找到index_views处理 

        需求:
            1.访问路径 http://localhost:8000/music/
                交给 music 应用中的 index_views 视图去处理
                url(r'^$',index_views)
            2.访问路径 http://localhost:8000/music/show
                交给 music 应用中的 show_views 视图去处理


             http://localhost:8000/music/index
                 交给 music 应用中的 index_views 视图去处理

            news 应用:
            1. http://localhost:8000/news/
                交给 news 应用中的 index_views 视图去处理

            需求
                1.http://localhost:8000/
                    交给 index 应用中的 index_views 视图去处理
                2.http://localhost:8000/login
                    交给 index 应用中的 login_views 视图去处理
                3.http://localhost:8000/register
                    交给 index 应用中的 register_views 视图去处理

                只要访问路径不是 music , news , sport 的话,一律都交给 index 应用去处理

 练习代码:https://blog.csdn.net/zh__quan/article/details/81987227

2.Django中的模板
 

   1.什么是模板

        模板就是要动态呈现给用户的网页内容
        模板的本质就是网页 - 前后端结合的网页

    2.模板的设置

        在settings.py中,TEMPLATES 变量
        1.BACKEND:指定模板的搜索引擎
        2.DIRS:指定模板的存放目录们
            如果DIRS中为空的话,那么Django会自动的到每个应用中搜索一个叫templates的目录作为模板存放目录
        3.APP_DIRS
            True:优先从DIRS指定的目录中查找模板,如果没找到的话,再搜索应用中的templates目录

    3.模板的加载方式

        1.使用loader获取模板,通过HttpResponse进行响应
            from django.template import loader

            def index_views(request):
                #1.通过loader加载模板
                t = loader.get_template("模板名称")
                #2.将模板渲染成字符串
                html = t.render()
                #3.通过HttpResponse响应给客户端
                return HttpResponse(html)
        2.使用render直接加载并返回模板
            def index_views(request):
                return render(request,'模板名称')

    4.模板的语法

        1.变量

            1.作用:允许将后端的数据传递给模板在模板中进行显示
            2.Django中允许作为变量传递给模板的数据类型
                字符串,数字,列表,元组,字典,函数,对象
            3.变量的语法
                变量们必须要封装到字典中才能传递给模板
                1.使用loader加载模板
                    dic = {
                        '变量1':'值1',
                        '变量2':'值2',
                        ... ...
                    }
                    t = loader.get_template("模板名称")
                    # 渲染成字符串时需要传递变量字典到模板中
                    return HttpResponse(t.render(dic))
                2.使用render加载并返回模板
                    dic = {
                        '变量1':'值1',
                        '变量2':'值2',
                        ... ...
                    }
                    return render(request,'模板名称',dic)

        2.标签

            1.作用
                将服务器端的功能嵌入到模板中
            2.语法
                {% 标签内容 %}
            3.标签详解
                1.comment 标签
                    {% comment %}

                    {% endcomment %}
                    作用:在服务器端就被注释的内容,不会被渲染到客户端的 
                2.for 标签
                    作用:循环遍历 列表,字典,元组
                    语法:
                        {% for 变量 in 列表|字典|数组 %}
                        {% endfor %}

                        循环中允许使用 forloop 内置变量来获取循环相关的信息
                            forloop.counter:记录当前循环的次数(从1开始计算)
                            forloop.first:判断是否为第一次遍历
                            forloop.last:判断是否为最后一次遍历
                3.if 标签
                    1.if
                        {% if 条件 %}
                            条件满足时要执行的内容
                        {% endif%}
                    2.if... else
                        {% if 条件 %}
                            满足条件时执行的内容
                        {% else %}
                        不满足条件时执行的内容
                        {% endif %}
                    3.if...elif...else  
                        {% if 条件1 %}
                            满足条件1执行的内容
                        {% elif 条件2 %}
                            或满足条件2执行的内容
                        {% elif 条件3 %}
                            或满足条件3执行的内容
                        {% else %}
                            都不满足时执行的内容
                        {% endif %}

猜你喜欢

转载自blog.csdn.net/zh__quan/article/details/81987106
今日推荐