1. 创建项目
使用Django提供的命令,可以创建一个Django项目实例需要的配置项——包括数据库配置、Django配置和应用程序配置的集合。新建Django项目命令的语法格式如下:
django-admin startproject 工程名称
例如:想要在D:\的pythonProject目录中创建一个名为mysite的项目工程,可执行如下命令:
cd d:\pythonProject
django-admin startproject mydemo
执行后,会多出一个新目录名为mydemo,此即为新创建的工程目录。
2. 项目目录说明
- mydemo : 根目录,项目的容器
- manage.py:一个提供Django项目管理功能的命令行工具
- **子mydemo:**一个纯Python包,其中存放项目文件,在引用项目文件时会使用到这个包名。
- mydemo\settings.py 是项目的整体配置文件。
- mydemo\urls.py 是项目的URL配置文件。
- mydemo\wsgi.py 是项目与WSGI兼容的Web服务器入口。
3. 启动项目
在开发阶段,为了能够快速预览到开发的效果,django提供了一个纯python编写的轻量级web服务器,仅在开发阶段使用。
运行服务器命令如下:
python manage.py runserver ip:端口
或:
python manage.py runserver
可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。
-
django默认工作在调式Debug模式下,如果增加、修改、删除文件,服务器会自动重启。
-
按ctrl+c停止服务器。
-
默认情况下开发服务器在本地IP的8000端口上启动,若要更改端口,可将端口作为命令行参数传递。例如在端口8080上启动服务器,命令如下所示:
python manage.py runserver 8080
4. 创建应用
在Web应用中,通常有一些业务功能模块是在不同的项目中都可以复用的,故在开发中通常将工程项目拆分为不同的子功能模块,各功能模块间可以保持相对的独立,在其他工程项目中需要用到某个特定功能模块时,可以将该模块代码整体复制过去,达到复用。在Django中, 把这一个个子功能模块成为应用,一个Django项目可以包含多个Django应用,每个应用可在多个项目中被重复利用
在django中,创建应用模块目录可以通过命令来操作,即:
python manage.py startapp 应用名称
manage.py 为上述创建工程时自动生成的管理文件。
例如,在刚才创建的mysite工程中,想要创建一个用户users应用模块,可执行:
python manage.py startapp users
4.1 应用目录说明
- admin.py 文件: 跟网站的后台管理站点配置相关。
- apps.py 文件: 用于配置当前应用的相关信息。
- migrations 目录: 用于存放数据库迁移历史文件。
- models.py 文件: 用户保存数据库模型类。 m : model v: view T: Template
- tests.py 文件: 用于开发测试用例,编写单元测试。
- views.py 文件: 编写视图函数,MVT模型中的V。
- db.sqlite3 : 轻量级关系型数据库,django默认使用sqlite数据库
4.2 注册应用
创建出来的子应用目录文件虽然被放到了工程项目目录中,但是django工程并不能立即直接使用该应用,需要注册安装后才能使用。
在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用,初始工程中的INSTALLED_APPS如下:
注册安装一个应用的方法,即是将子应用的配置信息文件apps.py中的Config类添加到INSTALLED_APPS列表中。
例如,将刚创建的demo子应用添加到工程中,可在INSTALLED_APPS列表中添加**‘demo.apps.DemoConfig’**。
4.3 在pycharm中 打开Django项目
- 找到项目的根目录,打开Django项目
- 设置项目的python解析器
5. 创建视图、定义路由
Django的视图是定义在应用的views.py中的。
5.1 创建视图
打开刚创建的users模块,在views.py中编写视图代码。
from django.http import HttpResponse
# 127.0.0.1:8000/index
def index(request):
"""
index视图
:param request: 包含了请求信息的请求对象
:return: 响应对象
"""
return HttpResponse("hello the world!")
# 127.0.0.1:8000/detail
def detail(request):
"""
index视图,首页视图
:param request: 请求对象
:return: 响应对象
"""
return HttpResponse('详情页')
- 视图函数的第一个传入参数必须定义,用于接收Django构造的包含了请求数据的HttpReqeust对象,通常名为request。
- 视图函数的返回值必须为一个响应对象,可将要返回的字符串数据放到一个HTTPResponse对象中。
5.2 定义路由URL
为了保证服务器能成功找到用户请求的页面,需为应用配置路由。在应用users中创建子路由文件urls.py,分别配置根路由和子路由,配置信息分别如下:
-
在应用中新建一个urls.py文件用于保存该应用的路由。
-
在users/urls.py文件中定义子路由信息。
from django.urls import path from . import views # urlpatterns是被django自动识别的路由列表变量 urlpatterns = [ # 每个路由信息都需要使用url函数来构造 # url(路径, 视图) path('index/', views.index), path('detail/', views.detail), ]
-
在项目工程总路由mydemo/urls.py中添加users应用的路由信息
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('demo/', include('demo.urls')) ]
- 使用include来将子应用users里的全部路由包含进项目路由中;
- ‘demo/’ 决定了users应用的所有路由都已**/demo/开头,如我们刚定义的视图index,其最终的完整访问路径为/demo/index/**。
6. 在Pycharm中创建Django项目
使用pycharm创建Django项目时默认使用最新的版本
当安装成功后,再打开项目解析器设置,效果如下
修改settings.py文件
解决办法: