今日内容

一、Django

MVC和MTV框架

MVC

  • controller:路由分发 用urls里面放置不同路径 执行不同函数
  • model 数据库信xi
  • view #views 逻辑相关里面,写函数,里面写数据

MTV

  • M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
  • T 代表模板 (Template):负责如何把页面展示给用户(html)。
  • V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。

  除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template

Django下载

下载安装

  • pip3 install django==1.11.9

  • 创建项目

    django-admin startproject mysite   创建了一个名为"mysite"的Django 项目

创建的项目文件介绍

manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库,启动关闭项目与	项目交互 等,不管你将框架分了几个文件,必然有一个启动文件,其实他们本身就是一个文件。 

settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。   

urls.py ----- 负责把URL模式映射到应用程序。    

二、项目

1.创建项目

2.创建app

  • urls.py

    • 注意事项

      • url(r'^books/(\d{4})/$', views.index)
      • 第一个参数:路径正则字符串
      • 第二个参数:对应的视图函数
    • 这个文件里面放url的路径,和对应的执行函数

    • from django.conf.urls import url
      from django.contrib import admin
      from app01 import views ##从app中导入对应的视图函数 urlpatterns = [
      # url(r'^admin/', admin.site.urls),
      url(r'^index/', views.index), url(r'^books/(\d{4})/$', views.year_books), #多路径的情况,用正则匹配
  • views.py 写逻辑视图

    • 这里面写url匹配的路径对应的函数关系

    • from django.shortcuts import render,HttpResponse
      # Create your views here. def index(request):
      print(request.method) #'POST' 'GET'
      if request.method == 'GET':
      return render(request,'login.html') ##返回的是html页面
      else:
      # print(request.GET)
      print(request.POST)
      username = request.POST.get('username')
      password = request.POST.get('password')
      if username == 'dazhuang' and password == '123':
      return HttpResponse('登录成功!')
      else:
      return HttpResponse('登录失败!') ##返回的是字符串
  • 在templates里面创建html文件

    • <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <title>Title</title>
      </head>
      <body>
      <from act="/index/" method="get">
      <input type="text" name="username">
      <input type="text" name="password">
      <input type="submit" value="提交">
      </from>
      </body>
      </html>

3.正则表达式的匹配

3.1匹配特点

  • 贪婪匹配:它会在它允许的范围内取最长的结果
  • 非贪婪匹配/惰性匹配:在量词后面加上?
    • .*?x  匹配任意非换行符字符任意长度,直到遇到x就停止
    • 转义 // 两个转义/表示变成普通/

3.2元字符

  • \w 匹配数字字母下划线
  • \d 匹配所有数字
  • \s 匹配所有空白符 换行符、制表符、空格、space
    • \n 匹配换行符
    • \t 匹配制表符
  • ^ 匹配一个字符串的开始
  • $ 结束
    • 利用 ^ $ 可以实现 判定某个字符串是否完全符合标准

3.3匹配规则

  .    表示匹配 除含航服之外的所有字符

  [^]  只要不出现在中括号中的内容都可以被匹配

    # 有一些有特殊意义的元字符进入字符组中会回复它本来的意义  #  .  |  [  ]  (  )

  a|b  或  符合a规则的或者符合b规则的都可被匹配  #如果a规则是b规则的一部分,且a规则比b规则要苛刻,就把a规则写在前面

  ()  分组  表示给几个字符加上量词蕨属的需求的时候,就给这些量词分在一个组

3.4量词

  {n}   表示这个量词之前的字符出现n次

  {n,}  表示这个量词之前的字符至少出现n次      

  {n,m}  表示这个凉席之前的字符出现n-m次

  ?      表示匹配量词之前的字符出现 0 次或者 1次

  +    表示匹配量词之前的字符出现 1 次或者 多次

  *     表示匹配量词之前的字符出现 0 次或者 多次

三、url配置

1.配置

基本格式: urlpatterns = [url(正则表达式,views视图函数,参数,别名)]

  • 正则表达式:一个正则表达式字符串
  • views视图函数:一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
  • 参数:可选的要传递给视图函数的默认参数(字典形式)
  • 别名:一个可选的name参数

2.无名分组

url(r'^books/(\d{4})/', views.books)

位置参数

  • url(r'^books/(\d{4})/', views.year_books),  #匹配年份的    url(r'^books/(\d{4})/(\d{1,2})/', views.year_month_books), #匹配年份和月份的 # http://127.0.0.1:8000/books/2001/
  •     视图:  
    def year_month_books(request,year,month): #位置参数,第一个参数接收的就是无名分组路径中匹配 到的第一个分组的数据,第二个参数接收的就是无名分组路径中匹配到的第二个分组的数据
    print(year,month)          
    # return render(request,'books.html')          

3.有名参数

  • 形参名称要和url中的分组名对应好,参数位置就没有要求了

  •     url(r'^books/(?P<year>\d{4})/(?P<month>\d{1,2})/', views.year_month_books), #匹配年份和月 份的      
     
      def year_month_books(request,month,year): #形参名称要和url中的分组名对应好,参数位置就没有要求了      
      print(year,month) 
       return HttpResponse(year+month)

4.默认值

  • 默认值,可以减少代码量

  • # urls.py中
    from django.conf.urls import url
    from.import views
    urlpatterns = [  
    url(r'^blog/$', views.page),  
    url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
    ] # views.py中,可以为num指定默认值
    def page(request, num="1"):  
    pass

django 学习第二天的更多相关文章

  1. Django 学习第二天——URL路由及模板渲染方式

    URL 的概念及格式: URL的引入:客户端:知道了url 就可以去进行访问: 服务端:设置好了url,别人才能访问到我 URL :网址(全球统一资源定位符):由 协议,域名(ip port) ,路径 ...

  2. Django (学习第二部 ORM 模型层)

    Django对数据库的操作 Django的 ORM 简介 ORM操作 (增删改查) ORM操作数据库的增删改查 ORM创建表关系 ORM中常用字段及参数 数据库的查询优化 ORM中如何开启事务 ORM ...

  3. Django学习笔记(五)—— 表单

    疯狂的暑假学习之  Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path         ...

  4. Django 学习笔记(七)数据库基本操作(增查改删)

    一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...

  5. Django学习之十: staticfile 静态文件

    目录 Django学习之十: staticfile 静态文件 理解阐述 静态文件 Django对静态文件的处理 其它方面 总结 Django学习之十: staticfile 静态文件 理解阐述     ...

  6. django学习:一些疑惑

    昨天学习了django的第二天,有一些收获. django的语法很严谨,看上去明明对齐的,但是他却提示说缩进不一致.后来我把前面的空全部删除,全部采用空格,这样就通过了,看样子还是要编程有一个好习惯, ...

  7. Django学习笔记---第一天

    Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...

  8. Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API

    用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...

  9. Django学习笔记(一)——安装,创建项目,配置

    疯狂的暑假学习之 Django学习笔记(一) 教材  书<The Django Book> 视频:csvt Django视频 1.创建项目 django‐admin.py startpro ...

随机推荐

  1. Nvidia Jetson TX2开发板学习历程( 2 )- 更换pip源,提高下载速度

    通过将pip的源更换为国内源,来提高下载速度,这也将成为今后学习过程下载Python包的基础,建议前期一定要完成! 知名的国内源 清华:https://pypi.tuna.tsinghua.edu.c ...

  2. Django视图基类

    Django视图基类 Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验.保存.转换数据) 控制数据库查询的执行 一 .视图 REST framework 提供 ...

  3. git 学习笔记 ---撤销修改

    自然,你是不会犯错的.不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: $ cat readme.txt Git is a distributed version co ...

  4. spring boot 中@Autowired注解无法自动注入的错误

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/huihuilovei/article/de ...

  5. C# HtmlAgilityPack+Selenium爬取需要拉动滚动条的页面内容

    现在大多数网站都是随着滚动条的滑动加载页面内容的,因此单纯获得静态页面的Html是无法获得全部的页面内容的.使用Selenium就可以模拟浏览器拉动滑动条来加载所有页面内容. 前情提要 C#HtmlA ...

  6. Ubuntu 下安装 OpenSSH Server

    Ubuntu 下安装 OpenSSH Server 是无比轻松的一件事情,需要的命令只有一条: sudo apt-get install openssh-server (查看返回的结果,如果没有出错, ...

  7. Django:母版、继承、组件、自定义标签

    1.for循环应用 1.1for Variable Description forloop.counter 当前循环的索引值(从1开始) forloop.counter0 当前循环的索引值(从0开始) ...

  8. js实现frame框架部分页面的刷新

    一.先来看一个简单的例子: 下面以三个页面分别命名为frame.html.top.html.bottom.html为例来具体说明如何做. frame.html 由上(top.html)下(bottom ...

  9. python 提取目录中特定类型的文件

    python使用‘os’和‘re’模块提取目录中特定类型的文件,这两个模都是安装python自带的,所以不需要安装. 思路: 使用os库lilstdir获取文件夹中的所有文件名,然后带上文件夹路径组合 ...

  10. Arm存储器

    Arm可以引出27根地址线,只能实现128MB的寻址,那么要如何实现1GB的寻址呢?答案就是使用nGCS片选线,nGCSx为低电平为选中相应的外接设备.一共八根片选线,也就是bank1,bank2-以 ...