Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发;
设计模型---Django 无需数据库就可以使用,它提供了对象关系映射器;
应用数据模型、便捷的API、动态管理接口、规划URLs;
转自Django参考文档:https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial01/
1.创建项目
(1)用命令语句:django-admin startproject mysite
注:mysite是自定义项目名
(2)创建成功后,如下图:
a.最外层(第一行)的:file: mysite/ 根目录只是你项目的容器, mysite可以将它重命名为任何你喜欢的名字
b.manage.py(第二行)
: 一个让你用各种方式管理 Django 项目的命令行工具
c.里面一层(第三行)的 mysite/
目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 mysite.urls
)
d.mysite/__init__.py(第四行)
:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包
e.mysite/settings.py(第五行)
:Django 项目的配置文件
f.mysite/urls.py(第六行)
:Django 项目的 URL 声明,就像你网站的“目录”
g.mysite/wsgi.py(第七行)
:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口
2.运行项目
在最外层的mysite目录,执行命令行:python manage.py runserver 8080
注:端口号8080可更改
如果要修改服务器监听的IP,在端口之前输入新的,比如:python manage.py runserver 192.168.1.1:8000
3.项目和应用的区别
应用:是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合;
项目:可以包含很多个应用。应用可以被很多个项目使用。
4.创建应用
在manage.py所在的目录下,执行命令行:python manage.py startapp polls
注:polls是自定义的应用名称
5.path参数
在polls/urls.py 的urlpatterns中,加入path语句:path('polls/', include('polls.urls'))
a.函数 include() 允许引用其它 URLconfs,其理念是使其可以即插即用,但是admin.site.urls
是唯一例外
b.path()参数-route:是一个类似正则表达式的匹配 URL 的准则。当 Django 响应一个请求时,它会从 urlpatterns
的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。但这些准则不会匹配 GET 和 POST 参数或域名。
例如,URLconf 在处理请求 https://www.example.com/myapp/
时,它会尝试匹配 myapp/
。处理请求 https://www.example.com/myapp/?page=3
时,也只会尝试匹配 myapp/
。
c.path()参数-view:当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入
d.path()参数-kwargs:任意个关键字参数可以作为一个字典传递给目标视图函数
e.path()参数-name:为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。
6.Django的处理流程
(1)django通过urls.py配置文件很好的处理了前端请求的指向,其中使用使用Python的正则表达式可以使匹配变得更灵活,字符串有前面加“ r ”是为了防止字符串中出现类似“\t”字符时被转义;
(2)Django用模型在后台执行SQL代码并把结果用Python的数据结构来描述。Django也使用模型来呈现SQL无法处理的高级概念;模型用于数据库的创建,在settings.py文件中配置数据库的连接,例如一个mysql数据库的配置;
(3)视图可以看作是前端与数据库的中间人,他会将前端想要的数据从数据库中读出来给前端。他也会将用户要想保存的数据写到数据库;
(4)模板就是我们所熟悉的页面了,django自带的有模板系统。它的主要作用是如何展示数据;
(5)一般的变量之类的用 {{ }}(变量),功能类的,比如循环,条件判断是用 {% %}(标签),如:
{% for i in TutorialList %}
{{ i }}
{% endfor %}