django 学习第二天
今日内容
一、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 installdjango==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 学习第二天的更多相关文章
- Django 学习第二天——URL路由及模板渲染方式
URL 的概念及格式: URL的引入:客户端:知道了url 就可以去进行访问: 服务端:设置好了url,别人才能访问到我 URL :网址(全球统一资源定位符):由 协议,域名(ip port) ,路径 ...
- Django (学习第二部 ORM 模型层)
Django对数据库的操作 Django的 ORM 简介 ORM操作 (增删改查) ORM操作数据库的增删改查 ORM创建表关系 ORM中常用字段及参数 数据库的查询优化 ORM中如何开启事务 ORM ...
- Django学习笔记(五)—— 表单
疯狂的暑假学习之 Django学习笔记(五)-- 表单 參考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path ...
- Django 学习笔记(七)数据库基本操作(增查改删)
一.前期准备工作,创建数据库以及数据表,详情点击<Django 学习笔记(六)MySQL配置> 1.创建一个项目 2.创建一个应用 3.更改settings.py 4.更改models.p ...
- Django学习之十: staticfile 静态文件
目录 Django学习之十: staticfile 静态文件 理解阐述 静态文件 Django对静态文件的处理 其它方面 总结 Django学习之十: staticfile 静态文件 理解阐述 ...
- django学习:一些疑惑
昨天学习了django的第二天,有一些收获. django的语法很严谨,看上去明明对齐的,但是他却提示说缩进不一致.后来我把前面的空全部删除,全部采用空格,这样就通过了,看样子还是要编程有一个好习惯, ...
- Django学习笔记---第一天
Django学习笔记 1.Django的安装 //如果不指定版本号,默认安装最新版 pip3 install django==1.11.8 关于Django的版本和python的版本依赖关系,请看下图 ...
- Django学习笔记(13)——Django的用户认证(Auth)组件,视图层和QuerySet API
用户认证组件的学习 用户认证是通过取表单数据根数据库对应表存储的值做比对,比对成功就返回一个页面,不成功就重定向到登录页面.我们自己写的话当然也是可以的,只不过多写了几个视图,冗余代码多,当然我们也可 ...
- Django学习笔记(一)——安装,创建项目,配置
疯狂的暑假学习之 Django学习笔记(一) 教材 书<The Django Book> 视频:csvt Django视频 1.创建项目 django‐admin.py startpro ...
随机推荐
- C++—多态与继承
一.基本概念 1.类的继承,是新的类从已有类那里得到已有的特性.或从已有类产生新类的过程就是类的派生.原有的类称为基类或父类,产生的新类称为派生类或子类. 2.派生类的声明: class 派生类名:继 ...
- 【NOIP2017】宝藏 题解(状压DP)
题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nnn 个深埋在地下的宝藏屋, 也给出了这 nnn 个宝藏屋之间可供开发的m mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中 ...
- python 之 网络编程(基于TCP协议的套接字通信操作)
第八章网络编程 8.1 基于TCP协议的套接字通信 服务端套接字函数 s.bind() 绑定(主机,端口号)到套接字 s.listen() 开始TCP监听 s.accept() 被动接受TCP客户的连 ...
- 45 容器(四)——手写LinkedList
概念 LinkedList级双向链表,它的单位是节点,每一个节点都要一个头指针和一个尾指针,称为前驱和后继.第一个节点的头指针指向最后一个节点,最后一个节点的尾指针指向第一个节点,形成环路. 链表增删 ...
- 『Go基础』第8节 格式化输出
输出就是将数据信息打印到电脑屏幕上. 本节我们就来学习一下Go语言中的三种输出方式: Print().Println().Printf(). 1.Print() Print()主要的一个特点就是打印数 ...
- Bootstrap-table 使用总结,和其参数说明
转载于:https://www.cnblogs.com/laowangc/p/8875526.html 一.什么是Bootstrap-table? 在业务系统开发中,对表格记录的查询.分页.排序等处理 ...
- C# 文件类中 File ,FileInfo 类的主要区别
System.IO命名空间中提供的文件操作类有File和FileInfo,这两个类的功能基本相同,只是File是静态类,其中所有方法都是静态的,可以通过类名直接调用,不需要实例化.而FileInfo是 ...
- 前端开发 Vue Vue.js和Nodejs的关系
首先vue.js 是库,不是框架,不是框架,不是框架. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vue.js 的核心是一个允许你 ...
- Unity VS2017 调试外部DLL
之前写的C++ DLL VS2012 都可以附加进程的方式调试Unity中的调用 这次用了一个C# DLL VS2017 在Unity 2018上无法附加进程的方式调试 经过一番折腾, 主要是两个问题 ...
- tomcat7:deploy (default-cli) on project myproject: Cannot invoke Tomcat manager: Software caused connection abort: socket write error
我使用的默认settings.xml,默认的里面只有tomcat6的服务器,没有tomcat7的服务器,接着往下看,下面来验证我的言论 进行tomcat7:run的命令时