1.创建一个新的虚拟环境
mkvirtualenv py_django
2.创建Django项目
第一个方法:
django-admin startproject name < name 为项目名>
例:django-admin startproject django_test
第二个方法:
3.进行项目配置
工程的配置文件是 settings.py
DEBUG :调试模式,创建工程后初始值为True,即默认工作在调试模式下。
本地语言与时区:
初始化的工程默认语言和时区为英语和UTC标准时区
LANGUAGE_CODE = 'en-us' # 语言:英语
TIME_ZONE = 'UTC' # UTC标准时区
将语言和时区修改为中国大陆信息
LANGUAGE_CODE = 'zh-hans' # 语言:简体中文
TIME_ZONE = 'Asia/Shanghai' # 亚洲上海
4.创建子应用
python manager.py startapp name < name 为子应用名>
例:python manager.py startapp users
子应用的目的
1) 代码复用(分工,解耦)
2) 功能模块可以在其他的项目中直接复制使用
admin.py 文件跟网站的后台管理站点配置相关。
apps.py 文件用于配置当前子应用的相关信息。
migrations 目录用于存放数据库迁移历史文件。
models.py 文件用户保存数据库模型类。
tests.py 文件用于开发测试用例,编写单元测试。
views.py 文件用于编写Web应用视图。
-
创建子应用后,需要注册安装,在工程配置里面
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'users.apps.UsersConfig', #将子应用配置文件里的apps.py 中的Config类添加到INSTALLED_APPS列表中 ]
5.定义函数视图
函数视图定义位置:在子应用的views.py文件中
1. 函数视图它是一个标准的Python函数。
2. 函数视图中,第一个参数必须定义:第一个参数为请求对象,用于接收用户发送的请求报文。
3. 函数视图中,必须返回响应对象:用于构造响应报文,并响应给用户。
4. 说明:
请求对象:HttpRequest() 对应的对象
响应对象:HttpResponse() 对应的对象
import json
from django.http import HttpResponse
# Create your views here.
from django.views import View
class register_view(View):
"""
用户注册函数视图
:param request: 请求对象,包含了请求报文信息
:return: 响应对象,用于构造响应报文,并响应给用户
"""
def get(self, request):
return HttpResponse('注册页面')
def post(self, request):
return HttpResponse('注册逻辑的实现')
6. 访问函数视图
使用路由匹配请求地址,每匹配成功一个就执行对应的函数视图逻辑
在子应用中新建一个urls.py文件用于定义该应用的所有路由信息
注册子路由
from django.urls import path
from . import views
# urlpatterns是被Django自动识别的路由列表变量:定义该应用的所有路由信息
urlpatterns = [
# 函数视图路由语法:
# path('网络地址正则表达式', 函数视图名),
# 用户注册:http://127.0.0.1:8000/users/register/
path('users/register/', views.register),
]
7.注册总路由
总路由说明:
一个子应用对应一个总路由。
总路由中,使用include()来将users子应用里的所有路由都包含进工程总路由中
8.启动django程序
python manage.py runserver
启动django程序
使用postman进行请求测试: http://127.0.0.1:8000/users/register/
发送post请求时需要关闭 'django.middleware.csrf.CsrfViewMiddleware',
Django默认开启了CSRF防护,会对非GET请求(POST, PUT, DELETE)进行CSRF防护验证,
在测试时可以关闭CSRF防护机制