【Django】Django项目结构

一、基本组件

1、基本配置文件/路由系统
2、MTV——模型层、模板层、视图层
3、Cookies与Session
4、分页及发邮件
5、Admin管理后台

二、文档参考网站与版本

1、一译
2、Django官网
教学版本:Django2.2.12
我下载的版本:Django3.2

三、创建项目

1、执行 django-admin startproject 项目名 即可创建对应的项目文件夹
2、进入目录后,执行python3 manage.py runserver (端口号) 启动django服务,端口号默认是8000,可以在http://127.0.0.1:8000看到启动页面。
3、关闭服务:ctrl+c或在其他终端下sudo lsof -i:8000查看进程id再kill -9 进程id号
windows下的命令为 netstat -ano | findstr 8000

四、项目结构

【Django】Django项目结构_第1张图片

1、manage.py

所有子命令的入口,比如:
python3 manage.py runserver 启动服务
python3 manage.py startapp 创建应用
python3 manage.py migrate 数据库迁移

直接执行python3 manage.py 可显示所有子命令

2、项目同名文件夹mysite1/mysite1

(1)_init.py

python包初始化文件。

(2)wsgi.py

Web服务网关配置文件,Django正式上线时需要使用。

(3)urls.py ****************

项目的主路由配置,当http使用时优先调用的文件。

(4)setting.py ******

项目的配置文件。
配置项分为公有配置和自定义配置。
配置项名称必须是大写的。

配置项 描述 备注
BASE_DIR 项目启动的绝对路径
DEBUG 项目启动模式(True-调试模式)(False-上线模式) 调试模式中前端页面可显示报错内容;上线模式需配合正确的ALLOWED_HOSTS
ALLOWED_HOSTS 请求头Host头 若想生效,DEBUG必须为True
DATABASES 数据库相关配置
TEMPLATES html页面相关配置
LANGUAGE_CODE 语言配置 中文zh-Hans
TIME_ZONE 时区 东八时区Asia/Shanghai
。。。 。。。

五、URL和视图函数

1、URL格式

protocol:// hostname[:port] / path [?query][#fragment]
协议://域名[:端口号] / 路由[?查询字符串][#锚点]

(1)protocol协议

  • http通过HTTP访问
  • https通过更安全的HTTPS访问
  • file资源是本地计算机上的文件

(2)hostname主机名、域名或ip地址

存放资源的服务器的域名系统DNS 主机名、域名或ip地址

(3)path路由地址*******

由零或多个"/"符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。路由地址决定了服务器如何处理这个请求。

(4)query查询

给动态网页传递参数,可有多个参数,用&隔开,参数名和值用=隔开

(5)fragment信息片段

类似书签,可直接定位到相应的位置

2、Django处理url请求

【Django】Django项目结构_第2张图片

3、视图函数 自己创建<项目同名文件夹下>/views.py

用于接收浏览器请求,并通过HttpResponse对象返回响应的函数。
此函数可以接收浏览器请求并根据业务逻辑返回相应的响应内容给浏览器。

from django.http import HttpResponse
def xxx_view(request,其他参数):
	return HttpResponse对象

六、路由配置

【Django】Django项目结构_第3张图片

1、路由配置-path

  • 导入 from django.urls import path
  • 语法 path(route,views,name=None)
  • route:匹配的请求路径
  • views:指定路径对应的视图处理函数的名称
  • name:为地址起别名,在模板中地址反向解析时使用

2、path转换器

  • 语法:<转换器类型:自定义名>
  • 数据将会按照关键字传参的方式传递给视图函数
  • eg:path(‘/page/’,views_xxx)
    【Django】Django项目结构_第4张图片
# 计算器练习

# urls配置如下
urlpatterns = [
    # 计算器 http://127.0.0.1:8000/a/opt/b/
    path('//',views.cal_view)
]

# views配置如下
def cal_view(request,a,opt,b):
    if opt == 'add':
        return HttpResponse(f'{a}+{b}={a+b}')
    elif opt == 'sub':
        return HttpResponse(f'{a}-{b}={a-b}')
    elif opt == 'mul':
        return HttpResponse(f'{a}*{b}={a*b}')
    else:
        return HttpResponse('Your opt is wrong!')
    

3、re_path正则表达式匹配

  • 在url的匹配过程中可使用正则进行精准匹配
  • 语法:re_path(reg,view,name=xxx)
  • 正则命名分组格式 (?Ppattern)
  • 匹配提取后按照关键字传参的方式返回给视图函数
  • 使用前需先导入此方法 from django.urls import re_path
# 若需求可匹配http://127.0.0.1:8000/20/mul/40
# 不可匹配http://127.0.0.1:8000/200/mul/400
from django.urls import re_path
urlpatterns = [
	re_path(r'^(?P\d{1,2})/(?P\w+)/(?P\d{1,2})$',views.cal2_view),
]
# 生日 http://127.0.0.1:8000/birthday/四位数字/一到两位数字/一到两位数字
# 生日 http://127.0.0.1:8000/birthday/一到两位数字/一到两位数字四位数字/
# 最终输出:生日为:xxxx年xx月xx日
urlpatterns = [
    re_path(r'^birthday/(?P\d{4})/(?P\d{1,2})/(?P\d{1,2})$',views.bir_view),
    re_path(r'^birthday/(?P\d{1,2})/(?P\d{1,2})/(?P\d{4})$',views.bir_view)
]

你可能感兴趣的:(django,python,后端)