django基础(二)

1.urls.py
    1.url函数的语法
        url(regex,views,kewarsg=None,name=None)
            1.regex
               正则表达式,匹配请求的url

            2.views
               视图处理函数或者其他的urls.py

            3.kwarsg

               字典,用来向views传参,没有参数则可以省略

            4.name
               字符串,给url()起别名,主要在模板中使用

            ex:
               urlpatterns = [
                  url(r"^run/$",run_)
               ]


   2.通过url向view传参


      1.使用正则表达式传参
         使用子组传参,一个子组是一个参数,想要多个参数的话,
         可以使用多个子组


         urlpatterns = [
            #访问路径是run/的时候,交给run_views处理
            url(r"^run/$",run_views)
            #访问路径是run/任意两位数字,交给run_args_views处理
            url(r"^run/(\d{2})",run_args_v_args_views)
            #访问路径是run/四位数字/两位数字/,run1_views处理
            url(r"^run(\d{4})/(\d{2})/",run1_views)
         ]


         注意:
            1.在url()中,一个子组()表示一个参数
            2.在views.py中,对应处理函数要根据url()中子组的个数,相应的定义函数,定义
              的参数要位于request之后.
            3.如果匹配上多个url,只执行最上面的url


              ex:
                 1.
                 url(r"^run/(\d{2})",run_views)
                 
                 def run_views(request,num)


                 2.url(r"run/(\d{2})/(\d{4})",run2_views)


                 def run_views(request,num1, num2)


      2.使用url()第三个参数,字典传参
         
         url(r"^show/$",show_views,{"name":"laoshe","age":"33"})


         def show_views(request,name,age):
            name:表示就是字典name参数的值
            age: 表示的就是字典age参数的值


            注意:
               1.视图处理函数中,必须声明参数
               2.参数的名称和位置,必须要和字典中的名称和位置保持一致


2.Django的应用
   1.定义:
      应用就是网站中的一个独立的程序模序模块
      在Django中, 主目录一般处理用户的具体请求,主目录主要做项目的初始化和


   2.创建应用
      1.命令
         ./manage,py startapp 应用名称           
         ex:
            python3 manage.py startapp news
           python3 


      2.在settings.py中进行注册
         在 INSTALLED_APPS中进行注册
         INSTALLED_APPS = [


          "news"
         ]


      3.应用结构组成
         1.migrations 目录
            存放数据库中间(日志文件)
         2.__init__.py
            应用初始化文件


         3.admin.py
            应用的后台管理配置文件


         4. apps.py
            应用属性配置文件


         5.models.py
            模型文件,与数据库有关


         6.tests.py
            测试模块
         7. views.py
            视图文件




      练习:
         创建index应用, 并注册
         创建sport应用, 并注册
         创建music应用, 并注册



      练习2.当访问http://localhost:8000
           则交给index应用中 index_views视图处理


           当http://localhost:8000/login
           则交给index应用中,login_views视图处理
           


3.Django模板(templates)
  1.模板
      定义:就是动态的给用户呈现的网页内容
           其实就是一个网页
           前后端的网页

  2.模板的设置
      在setting中有一个TEMPLATES 变量
      TEMPLATTES = [
        {"BACKEND":"",
          "DIRS":[..... .. . ],

        }
      ]
      1.BACKEND: 指定模板的搜索引擎,不用动
      2.DIRS :   指定模板所存放目录们
        DIRS = ["index.temp","music.temp"]
        但是DIRS中为空的话,那么Django会自动到每个应用中去搜索一个叫templates的目录来
        作为模板的管理目录.
        推荐:
          1.DIRS内容保持为空
          2.在每个应用中,都创建了一个templates目录 


      3.APP_dirs
         True:首先从DIRS中指定的目录中查找模板,如果没有找到的话,在搜索templates目录


  3.模板的加载方式

    1.使用loader获取模板,并通过HttpResponse进行响应

        1. from django.template import loader

        2.通过loader加载模板

            1. t = loader.get_template("模板名称")
            2. 通过t对象, 将模板渲染成字符串
                html  =  t.render()
            3. 通过HttpResponse 将 html相应给客户端

                return HttpResponse(html)


    2.使用render直接加模板并返回
       
      from django.shortcuts import render

      return render(request,"模板名称")

4.模板的语法
  1,变量
    1.作用: 
        将后端的数据传递给模板,在模板中,会根据变量的值进行显示
    2.在Django中允许传递给模板做变量的数据类型,数字,字符串, 列表, 元组,字典,函数,
      对象
    3.变量的语法
         1.如果使用loader的话
            dic = {
              "变量名1":"值1",
              "变量名2":"值2",
              "变量名3":"值3",
            }

          t = loader.get_template("xxx.html")
          html = t.render(dict)
          return HttpResponse(html)

          在模板中显示变量:{{变量名}}
    
        2.使用render
          dic = {
            "变量1":"值1"


          }
          render(request,"html",dic)


     练习:
        当访问http://localhost:8000/news/05-exer
        在模板中显示以下内容:
        书名:<背影>
        作者:朱自清
        出版社:北京大学出版社
        出版时间:1995-10-12


  2.标签
    1.什么是标签
        允许将服务器端的一些功能嵌入到模板中
    2,语法:
      {%标签内容%}
      1.for
         {%for 变量 in 列表|元组|字典%}
         {% endfor %}
         允许使用for提供的内置变量-forloop
          1.forloop.counter
             记录当前循环的次数,从1开始
          2.forloop.first
             是否是第一次循环(第一项)
          3.forloop.last
            是否是最后一次循环(最后一项)

      2.if
        1. 
          {$if 条件 %}
            满足条件运行的内容
          {$ endif %}
            条件中允许使用比较运算符(>,<,<=,>=,!,==),逻辑运算符(and,or,not)
            注意:and 和 or 不能同时出现

      3. {% if 条件 %}
            满足条件运行的内容
         {% else %}
            不满足条件运行的内容
          {% endif %}


      3. {% if 条件1 % }
             满足条件1运行的内容
         {% elif 条件2 %}
            满足条件2运行的内容
         {% elif 条件3 %}
            满足条件3运行的内容
        { % else %}
             不满足以上条件运行的内容

    3.过滤器
        1.作用
            过滤数据
            在显示变量的数据之前,允许对数据进行筛选或者改变


        2.语法规范
            {{变量|过滤器:参数|}}

        3.简单的过滤器 
          1.{{value|upper}}
             将value变为大写字符

          2.{{value|lower}}

          3.{{value|add:num}}
             将num累加到value之后
          4.{{value|floatformat:n}}
             将value四舍五入到n位小数

          5. {{value|truncatechars:n}}
             将字符串截取到n位(包含....)

作业:1.创建项目-fruitday

         2.创建应用-index
         3.配置路由配置模块
         4.将login.html移植到fruitday中,以模板的形式呈现给用户
         

你可能感兴趣的:(Django基础)