Django是一个功能完备的Python Web框架,可用于构建复杂的Web应用程序。在本文中,将经过示例跳入并学习Django。您将按照如下步骤建立功能完备的Web应用程序,并一路学习框架的一些最重要的功能以及它们如何协同工做。html
学习目标:python
web开发框架有不少,单单python语言的web框架大大小小的就有十几种,例如:Django、flask、tornado、web.py、aiohttp、sanic、vibora、bottle、falcon、weppy等。那为何咱们要优先学习Django呢?web
首先,它是使用python编写的,python也是对初学者友好的编程语言之一。数据库
其次,它的功能范围。若是你须要构建一个网站,使用Django,则无需依赖任何外部库或包。这意味着您不须要学习如何使用其余任何东西,而且语法是无缝的,由于从前到后只使用一个框架。django
还有一个额外的好处是,您没必要担忧更新一个库或框架会使您安装的其余库变得无用。若是您确实发现本身须要添加额外功能,则可使用一系列外部库来加强您的站点。编程
最后,就是有关Django的文档很是的完整,有关于Django各个方面的详细文档,还有一些相关的实例flask
Django是一个具备大量功能的高级Web应用程序框架。对于任何刚接触Web开发的人来讲,因为其出色的文档,特别是若是您也熟悉Python,这对他们来讲很是棒。最关键的是学会Django以后再去学习其余的框架就很是轻松了。浏览器
一个完整的Django程序是由一个项目组成,该项目被拆分为单独的应用程序。这个想法是每一个应用程序处理站点须要执行的自包含功能。举个例子,想象一下像Instagram这样的应用程序。须要执行几个不一样的功能:服务器
这些是各自独立的功能,因此若是这是一个Django站点,那么每一个功能应该是单个Django项目中的不一样Django应用程序。session
Django项目还有一些适用于整个项目的配置,例如项目设置,URL,共享模板和静态文件。每一个应用程序均可以拥有本身的数据库,并具备本身的功能来控制数据在HTML模板中向用户显示的方式。
每一个应用程序也有本身的URL以及本身的HTML模板和静态文件,例如JavaScript和CSS。
Django应用程序的结构使得逻辑分离。它支持模型 - 视图 - 控制器模式,也就是咱们传统web所说的MVC架构,这是构建大多数Web框架的体系结构。基本原则是在每一个应用程序中有三个单独的文件分别处理三个主要逻辑:
可是在Django中,架构略有不一样。虽然基于MVC模式,Django处理控制器部分。无需定义数据库和视图的交互方式。这一切都框架内部都为你!
Django使用的模式称为模型 - 视图 - 模板(MVT)模式。MTV模式中的视图和模板构成MVC模式中的视图。您须要作的就是添加一些URL配置来映射视图,Django来帮你处理其他的东西!
不管在何时开发项目,都应该先设置一个好的开发环境。先建立一个目录,而后cd到这个目录当中。
> mkdir newDjango > cd newDjango
如今就能够建立一个单属于你这个项目的虚拟环境了,可是这边我就直接使用系统环境。
命令行建立:
# 建立项目 > django-admin startproject first_project # 建立app > python manage.py startapp hello_world
pycharm建立:
# 项目first_django目录中各文件做用 - __init__.py 告诉Python将目录视为Python包。 - settings.py 包含Django的相关配置 - url.py 路由文件 - wsgi.py 创建服务器与Django程序之间的通讯
# app中各部分文件的做用 - __init__.py 告诉Python将目录视为Python包。 - admin.py 包含Django管理页面的设置。 - apps.py 包含应用程序配置的设置。 - models.py 包含Django的ORM转换为数据库表的一系列类。 - tests.py 包含测试类。 - views.py 包含处理HTML模板中显示的数据的函数和类。
在建立应用程序后,正常来讲咱们须要在配置中安装它。在first_django/settings.py
,在下面添加如下代码行INSTALLED_APPS
:
# Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'hello_world.apps.HelloWorldConfig', ]
若是你使用的是pycharm建立项目的话,就不须要这一步骤了,由于它会自动帮你讲app添加到相关配置里面。如今咱们的项目以及相关的app都已经创建起来了,接下来就是建立一个视图,以便与向用户展现内容。
Django中的视图是app目录中的views.py
文件内的函数或类的集合。每一个函数或类处理每次访问不一样URL时处理的逻辑。
打开views.py会发现那里已经导入了一个render
from django.shortcuts import render # Create your views here. def hello_world(request): return render(request,'hello_world.html',{})
在这段代码中,已经定义了一个名为的视图函数hello_world()
。调用此函数时,它将呈现一个名为的HTML文件hello_world.html
。该文件尚不存在,接下来就来建立它。
view函数接受一个参数request
。此对象是HttpRequestObject
在加载页面时建立的对象。它包含有关请求的信息,例如方法,它能够包含多个值,包括GET
和POST
。
如今已经建立了视图功能,您须要建立HTML模板以显示给用户。在app目录中render()
调用的目录中查找HTML模板templates
。建立该目录,而后建立一个hello_world.html
在其中命名的文件(因为我是直接使用pycharm建立的项目,因此会自带一个模版目录(templates)):
<h1>hello world</h1>
第一种方式:
如今已经建立了一个函数来处理视图和模板以显示给用户。最后一步是处理url,也就是常说的网址,以便咱们能够访问刚刚建立的网页。项目中有一个调用的模块urls.py
,须要在该模块中包含该hello_world
应用程序的URL配置。在里面first_django/urls.py
,添加如下内容:
from django.contrib import admin from django.urls import path from hello_world import views urlpatterns = [ path('admin/', admin.site.urls), path('hello_world', views.hello_world) ]
添加成功以后,重启服务器并访问127.0.0.1:8000\hello_world
,应该就可以看到新建的HTML模版:
第二种方式:
经过以上方式咱们能够完成咱们的第一个Django项目,可是万一你的项目当中不止一个app那要怎么办呢,要如何将不一样app的路由解耦合呢?这个时候就须要用到咱们分发路由的方式了:
首先,在first_django\urls.py
中添加如下代码:
from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('', include('hello_world.urls')), ]
固然,只是这样还不够,咱们还须要在相应app中建立一个独立的urls.py
,以下:
from django.urls import path from hello_world import views urlpatterns = [ path('', views.hello_world, name='hello_world'), ]
添加完再启动项目,在浏览器直接访问127.0.0.1:8000
就直接能够访问了
ok,至此咱们的第一个Django项目就已经完成了!!!