Django基础
Django基础篇
目录
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。
所谓应用框架,就是大神们用编程语言写好的一个架子,相当于一个人有骨头,有肉,人家给了你一副骨骼,至于你想制作什么样的人,你就给骨骼上对应地方添加修改即可。
Django对比Flask框架特点:Django大而全、Flask:小而精。
Django 框架的核心组件有:
-
用于创建模型的对象关系映射
-
为最终用户设计的完美管理界面
-
一流的 URL 设计
-
设计者友好的模板语言
-
缓存系统。
著名的MVC模式:所谓MVC就是把web应用分为模型(M),控制器(C),视图(V)三层;他们之间以一种插件似的,松耦合的方式连接在一起。
模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。
主要目的:分离视图(View)和模型(Model),MVC有单独的业务逻辑层面。
-
Model(模型)表示应用程序核心(比如数据库记录列表)。
-
View(视图)显示数据(数据库记录)。
-
Controller(控制器)处理输入(写入数据库记录)。

Django的MTV模式本质上与MVC模式没有什么差别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同,Django的MTV分别代表:
- Model(模型):负责业务对象与数据库的对象(ORM)
- Template(模版):负责如何把页面展示给用户
- View(视图):负责业务逻辑,并在适当的时候调用Model和Template
怎样区分是MVC该是MTV呢?总而言之一句话,逻辑代码写在了views视图中的即是MTV
方式1:
直接通过pycharm安装
方式2:
通过pip下载安装--pip install Django
下载安装成功后,即可创建一个Django项目,如下:
创建一个Django项目
- django-admin project (project_name)
- manage.py : 与django进行交互的命令脚本。
- 一个项目有多个应用
- 一个应用可以被多个项目拥有
- 创建一个项目:django-admin startproject project_name
- 创建一个django应用: python manage.py startapp appname
- 启动项目:python manage.py runserver IP:PORT
- 创建ORM对应表关系:python manage.py makemigrations
- 创建对应的库表:python manage.py migrate
Django框架核心模块
- models : 与数据库交互文件
- views : 存放视图函数的
- setting:存放配置文件
- urls:设置页面访问路径
urlpatterns = [
path('admin/', admin.site.urls),
path(r'timer/', show_time),
# 查看博客 url模块前面输入的就是路径匹配原则
# 这里说的以2004开头
# 说白了调用了url模块,输入的路径就是以正则为基础
url(r'^2004/$', year_2004),
# 使用分组匹配后,系统会将分组的内容传递给year这个视图函数!
# 所以,视图函数要加一个形参
url(r'^(\d{4})/$', year)
]
views视图如下:

urlpatterns = [
path('articles/2003/', views.special_case_2003),
path('articles/<int:year>/', views.year_archive),
path('articles/<int:year>/<int:month>/', views.month_archive),
path('articles/<int:year>/<int:month>/<slug>/', views.article_detail),
]

得出,path能直接提取出int,而且面向数字类型的不用像正则一样修改匹配规则.

1.基础使用方法
def show_time(request):
import datetime
t = datetime.datetime.now()
return HttpResponse("<h1>it is %s</h1>" %(str(t)))
HttpResponse用于返回字符串
# return常用返回方法如下
# request.method # 请求方式 # request.GET # 存放GET请求数据 # request.POST # 存放POST数据
后端给前端传值,单个变量,以字典方式传输,如上图,如果传输所有变量,则使用locals()
<!--模板语法及如何取出后端传递的变量--!>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hellow World for {{ name }}</h1>
<h2>Hellow World for {{ i }}</h2>
<h2>Hellow World for {{ l }}</h2>
<h2>Hellow World for {{ d }}</h2>
<hr>
<h3>深度查询:句点号 .
<p>{{ l.0 }}</p>
<p>{{ l.1 }}</p>
<p>{{ l.2 }}</p>
<hr>
<p>字典取值: </p>
<p>{{ d.name }}</p>
<p>{{ d.age }}</p>
<hr>
<p>locals取出本地所有变量</p>
<p>单个取出<br>
{{ query.0.name }}
</p>
<p>循环取出
{% for person in query %}
<p>{{ person.name }}</p>
{% endfor %}
</p>
<hr>
<p>
判断语句<br>
{% if i > 100%}
<p>i大于100</p>
{% else %}
<p>i小与等于100</p>
{% endif %}
</p>
</h3>
</body>
</html>
、
浙公网安备 33010602011771号