Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式链接在一块儿。css
模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图以下所示:html
Django的MTV模式本质上和MVC是同样的,也是为了各组件间保持松耦合关系,只是定义上有些许不一样,Django的MTV分别是值:python
除了以上三层以外,还须要一个URL分发器,它的做用是将一个个URL的页面请求分发给不一样的View处理,View再调用相应的Model和Template,MTV的响应模式以下所示:jquery
通常是用户经过浏览器向咱们的服务器发起一个请求(request),这个请求回去访问视图函数,(若是不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,而后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。shell
pip3 install django
切换到准备建立Django项目的目录下,执行下述命令:数据库
django-admin.py startproject mysite
因为MAC没有tree命令,经过如下命令查看目录结构:django
$ find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'
切换到mysite目录下,执行如下命令:浏览器
$ python3 manage.py startapp blog $ pwd /Users/hqs/PycharmProjects/mysite
mysite.blog文件夹中放的都是应用相关的内容,views.py是视图函数相关 ,models.py是数据库相关。bash
mysite.mysite中的settings.py是配置相关的,urls.py是和路由相关的。服务器
再在mysite中建立templates目录,存放页面模板。
MacBook-Pro:mysite hqs$ python3 manage.py runserver 8080 Performing system checks... System check identified no issues (0 silenced). You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. June 30, 2018 - 04:48:31 Django version 2.0.6, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8080/ Quit the server with CONTROL-C.
这样咱们的django就启动起来了!当咱们访问:http://127.0.0.1:8080/时就能够看到:
先用pycharm建立一个Django项目:
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), path('timer/', views.timer) ]
from django.shortcuts import render # Create your views here. def timer(request): import time ctime = time.strftime('%Y-%m-%d %H:%M:%S') # 2018-06-30 05:48:11 """ render方法: 一、帮忙找到timer.html取出里面的数据; 二、按照固定的语法({})把变量嵌套到html文件中 """ return render(request, 'timer.html', {"date":ctime}) # 使用render方法,返回一个页面
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h4>当前时间:{{ date }}</h4> </body> </html>
执行效果以下所示:
静态文件配置就是为了让用户请求时django服务器能找到静态文件返回。
一、首先建立static文件夹,为了应用解耦,在static文件夹下建立app01文件夹
二、在settings.py中配置静态文件目录
# Static files (CSS, JavaScript, Images) # https://docs.djangoproject.com/en/2.0/howto/static-files/ STATIC_URL = '/static/' # 别名(不要改动) STATICFILES_DIRS = [ # 别名对应的实际路径(STATICFILES_DIRS不能有任何改动) os.path.join(BASE_DIR, "static") # 对应的是建立的static文件,这个文件名能够变更 ] """ 浏览器输入:http://127.0.0.1:8000/static/jquery-3.3.1.js 能够找到这个jquery文件。 注意:浏览器输入的static指的是别名STATIC_URL,由Django配置。 """
三、在static/目录下放入jquery-3.3.1.js文件,在static/app01/目录下建立timer.css和timer.js文件
h4{ color: red; }
$("h4").click(function () { $(this).css("color", "green"); })
四、修改templates/timer.html文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="/static/jquery-3.3.1.js"></script> <!--引入css文件--> <link rel="stylesheet" href="/static/app01/timer.css"> </head> <body> <h4>当前时间:{{ date }}</h4> </body> <!--引入js文件,注意引入位置,否则找不到h4元素--> <script src="/static/app01/timer.js"></script> </html>