MTV模式
著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。
模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。
Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:
Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template
2 开始Django
1、创建Django项目
django-admin startproject mysite
当前目录下会生成一个 mysite的工程,目录结构如下:
-
manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
-
settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
-
urls.py ----- 负责把URL模式映射到应用程序。
2、在mysite目录下创建app应用
python manage.py startapp blog
3、启动django项目
python manage.py runserver 8899 # ip:端口,默认本地ip
当我们访问:http://127.0.0.1:8899/ 时就可以看到:
3 Setting文件配置
方法一:
静态文件在单独的app下:如 /app01/static/app01/JS/jquery-2.1.4.min.js (其中蓝色app01目录为必须,但可改其他名字,static文件夹也可改其他名字)
# index.html
{% load static %} <script src="{% static 'app01/JS/jquery-2.1.4.min.js' %}"></script>
setting文件设置: (其中app01为项目名字,static为保存静态文件的文件夹。)
STATIC_URL = '/whattttt/' # 前端使用前缀
STATICFILES_DIRS = (
os.path.join(BASE_DIR,'app01','static'),
)
方法二: (同上述setting配置)
# index.html
<script src="/whattttt/app01/JS/jquery-2.1.4.min.js"></script>
方法三: 使用别名的形式
# index.html
{% load static %} <script src="{% static 'biemin/JS/jquery-2.1.4.min.js' %}"></script> <script src="/whattttt/biemin/JS/jquery-2.1.4.min.js"></script>
setting文件设置:
STATIC_URL = '/whattttt/'
STATICFILES_DIRS = (
('biemin',os.path.join(BASE_DIR,'app01','static','app01')),
)
补充:
如果不想每次在模版中加载静态文件都使用 {% load static%}
可以在settings.py中的 TEMPLATES/OPTIONS添加'builtins':['django.templatetags.static']
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
#添加在这个位置
'builtins' : [
'django.templatetags.static'
],
},
},
]
4 Django URL路由系统
它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表
urlpatterns = [ url(正则表达式, view函数,参数,别名), ] urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', views.index , {"a":'123'} , 'FFF'), ]
参数说明:
-
一个正则表达式字符串
-
一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
-
可选的要传递给视图函数的默认参数(字典形式)
-
一个可选的name参数 (别名)
from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^index/', views.index), url(r'^articles/([0-9]{4})/$', views.year_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive), url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail), ]