【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项目结构

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数据库相关配置
TEMPLATEShtml页面相关配置
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请求

在这里插入图片描述

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

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

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

六、路由配置

在这里插入图片描述

1、路由配置-path

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

2、path转换器

  • 语法:<转换器类型:自定义名>
  • 数据将会按照关键字传参的方式传递给视图函数
  • eg:path(‘/page/<int:page>’,views_xxx)
    在这里插入图片描述
# 计算器练习

# urls配置如下
urlpatterns = [
    # 计算器 http://127.0.0.1:8000/a/opt/b/
    path('<int:a>/<str:opt>/<int:b>',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)
  • 正则命名分组格式 (?P<name>pattern)
  • 匹配提取后按照关键字传参的方式返回给视图函数
  • 使用前需先导入此方法 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<a>\d{1,2})/(?P<op>\w+)/(?P<b>\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<year>\d{4})/(?P<month>\d{1,2})/(?P<day>\d{1,2})$',views.bir_view),
    re_path(r'^birthday/(?P<month>\d{1,2})/(?P<day>\d{1,2})/(?P<year>\d{4})$',views.bir_view)
]
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值