前期准备工作安装虚拟环境,不多说了,之前在讲flask时,已经很详细的讲过!
一、进入虚拟环境之后安装django
pip install django
指定版本安装:
pip install django==1.11
你可以执行 pip freeze 会看到,Django已经安装成功:
二、接着来创建一个django的项目配制环境
下边最后projectName是创建文件夹的名字
django-admin startproject projectName
创建完成之后,它会生成一个项目文件:
projectName/ manage.py projectName/ __init__.py settings.py urls.py wsgi.py
我们来依次分析下:
最外层这个projectName/
是项目的根目录,是你项目的容器,Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。
manage.py
一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读 django-admin and manage.py 获取所有 manage.py 的细节。
里面一层的 mysite/ 目录
包含你的项目,它是一个纯 Python 包。看里边的__init__.py也能看出来!它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。 (比如 projectName.urls)
projectName / __init__.py
一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
projectName / settings.py
Django 项目的配置文件。关于setting.py的分析我们在下边讲。
projectName / urls.py
Django 项目的 URL 声明,就像书籍的“目录”一样(其实就是一个路由配置文件)。
projectName / wsgi.py
作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
三、确认Django项目是否创建成功
cd到 外层 projectName 文件夹下,执行下边命令:
python manage.py runserver
顺利的话,会出现这样的网址,说明服务以成功启动,复制网址至浏览器:
官网的说明:
你刚刚启动的是 Django 自带的用于开发的简易服务器,它是一个用纯 Python 写的轻量级的 Web 服务器。我们将这个服务器内置在 Django 中是为了让你能快速的开发出想要的东西,因为你不需要进行配置生产级别的服务器(比如 Apache)方面的工作,除非你已经准备好投入生产环境了。
关于端口问题:
补充下:当你创建Django项目时,如果出现以下错误,说明8000这个端口被占用了。
<<<<<<<<<< Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
默认情况下,runserver
命令会将服务器设置为监听本机内部 IP 的 8000 端口。由于酷狗经常占用8000端口,我们一开酷狗Django就运行不了了,这时我们也可以考虑更改Django运行端口:
下面的命令会使服务器监听 5050 端口:
python manage.py runserver 5050
自动加载服务器:
用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍 Python 代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器。(跟vue-cli中的热更新类似)
补充:
(1)更改端口号:python manage.py runserver 80
(2)更改IP:python manage.py runserver 0.0.0.0:8000
Django的配置环境创建成功之后,下边我们来真正创建一个项目应用:
四、创建项目应用
官方文档:
在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。(在flask中,就没有这样的待遇了,你需要自己配置基础目录!)
项目 VS 应用
项目和应用有啥区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。
你的应用可以存放在任何 Python path 中定义的路径。在这个教程中,我们将在你的 manage.py
同级目录下创建第一个应用。这样它就可以作为顶级模块导入,而不是 projectName的子模块。
请确定你现在处于 manage.py
所在的目录下,然后运行这行命令来创建一个应用:(命令最后applicationName是自定义应用的名字)
python manage.py startapp applicationName
创建完,会出现一个applicationName文件夹,目录如下:
applicationName/ 应用的名字 __init__.py admin.py 该应用的后台管理系统配置,Django自带一个后台管理系统 apps.py 该应用的一些配置 1.9版本之后会自动生成 migrations/ 数据移植(迁移)模块,内容是自动生成的,不需要管它 __init__.py models.py 一些数据模块,ORM tests.py 自动化测试模块,Django提供了自动化测试功能,在这里编写测试脚本 views.py 执行响应代码所在的模块(编写视图函数的地方结合flask视图函数理解),逻辑处理的主要地方,项目中大部分均在这里编写
五、添加应用名在settings.py中的INSTALLED_APPS里
之所以把这个配置列出来,因为刚学的朋友很可能会忘记这个配置项!!!
下边是我创建的一个 djapp 的应用,把它配置到settings.py中。。。
六、在应用文件夹中的views.py中创建第一个视图函数
温馨提示:在创建第一个视图函数之前,个人建议看下Django的开发服务器是否启动,如果没启动,运行:python manage.py runserver 启动它
1、在views.py中创建视图函数
# views.py
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse # 首先导入HttpResponse类 ,它是一个HTTP响应的类
#创建视图函数
def index(request):
return HttpResponse('<h1>我最牛逼!宇宙第一!</h1>')
2、在urls.py文件中,配置你的路由,下边有详细的介绍,urls.py是路由配置文件
from django.contrib import admin
from django.urls import path
import djapp.views as dj # 应用文件中的视图函数引入进来
urlpatterns = [
path('admin/', admin.site.urls),
path('haha/',dj.index) # 第一个参数是自定义的route路由路径,第二个参数是需要匹配的视图函数
]
ok完成,打开浏览器输入 http:localhost:8000/haha可以看到
下边是关于urls.py文件详细说明:
urls.py文件
urls 文件是路由的配置文件,可结合vue中router.js文件理解,把视图函数映射到路由上,个人理解里边就是给路由配置路径。
1、首先引入视图函数
2、把视图函数映射到路由上去
import firstproject.views as fv
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', fv.index),
]
path:有四个参数,前两个是必填的,route 路由 和 view 视图,两个可选参数,kwargs 和name
下边是官网的解释:
path() 参数: route
route
是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns
的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。
这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/
时,它会尝试匹配 myapp/
。处理请求 https://www.example.com/myapp/?page=3
时,也只会尝试匹配 myapp/
。
path() 参数: view
当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest
对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。稍后,我们会给出一个例子。
path() 参数: kwargs
任意个关键字参数可以作为一个字典传递给目标视图函数。
path() 参数: name
为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。