Django大揭秘: 路由架构&文件结构

前言

欢迎来到我的博客

个人主页:北岭敲键盘的荒漠猫-优快云博客

整理Django项目结构,路由配置。

比较简洁,省略了跟你讲各种网络概念。

适合有基础的人快速入门开发

简单了解Django

 一个用于开发后端的框架。

是python最好的web后端框架之一,企业级别。

创建Django项目

方法一:

在项目文件夹启动终端输入

django-admin startproject [项目名称]

方法二:

利用pycharm进行项目创建

运行Django

方法一:

命令行输入

python manage.py runserver

方法二:

pycharm里直接点开始运行

运行后就可以访问127.0.0.1:8000即可。

项目结构简介

结构总况

文件作用

manage.py:

就像系统的cmd一样。执行我们对项目进行的命令。

命令格式:

python manage.py [命令]

可以用以下命令来查看可执行的操作。

python manage.py help

settings.py:

项目的配置文件

url.py:

配置URL路由

wsgi.py:

用于部署项目

Project与App概念介绍

概念介绍:

Project项目是我们整个web代码。

App则是我们项目的某些模块。

比如某个网站是个小说网站。

但是他也有看视频,赚钱,看漫画功能。

这些功能各成一个App分离。

然后这些分离的模块组装在一起成为一个App。

创建App:

python manage.py startapp [app名]

URl与视图函数对应

理解:

传统的php网站的URL就是他文件夹的样式,就像访问windows路径一样,访问页面文件。

Django这种模式是一个URL路径对应一个页面函数。

 操作与效果演示:

urls文件指定路径

需求:

我们要对方访问127.0.0.1:8000/login时

会返回一个只有帅气的人才能看到登录界面文字。

我们定义一个视图函数

#定义一个可以显示页面的函数
from django.shortcuts import HttpResponse
def show_info(request):
    return HttpResponse("只有帅气的人才能看到登录页面")

然后我们要修改urlpatterns

他是一个列表,我们根据他的格式更改,添加一个路径即可

最终成品

Django默认我们更改代码无需重启程序也能更新页面

两种URL传参

GET传参

创建一个num App模块。

我们把视图函数写到views里

获取GET传参的方式如下

from django.shortcuts import render
from django.shortcuts import HttpResponse
# Create your views here.

def show_info(request):
    num=request.GET.get("num")
    return HttpResponse(f"你输入的数字是{num}")

视图函数固定的request里有GET,然后用内置的get方法即可拿取num传参

这里还会返回我们输入的内容。

然后我们导入urls

即可进行GET传参

URL路径传参

原理:url指定一个目录,然后指定后面再出现目录就全是参数

配置URL路径

from num import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('num/<num>',views.show_info)
]

这里我们可以访问num路径,然后定义了一个<num>这个就代表这个路径是参数。

最后绑定视图函数num的App中views中的show_info函数中。

这种形式需要视图函数通过接收参数的形式进行读取数据。

def show_info(request,num):
    return HttpResponse(f"你传入了参数数字:{num}")

看看效果

它还可以规定类型。

保证传入的是某些类型。

例如要求是int就可以这样,如果不是的话会返回404

<int:num>

有以下类型可选

str:默认,非空字符串

int:整型

slug:字符串,但是允许有_符号

uuid:匹配uuid字符串

path:非空英文字符,允许有/

path函数的使用

 path(route,view,name=None,kwargs=None)

1. route 参数: url 的匹配规则。
2. view 参数:可以为一个视图函数或者是 类视图.as_view() 或者是 django.urls.include() 函数
的返回值。
3. name 参数:这个参数是给这个 url 取个名字的,这在项目比较大, url 比较多的时候用处很大。

路由模块化

之前的urls路由都在总路由处。

如果这个页面很负责,就会出现url文件整个一团乱麻的情况。

这时候可以采用模块化路由,在每个App中进行规定路由,最后导入总路由。

在num处创建一个urls文件

内容跟总的urls差不多即可

这个视图函数就是他所在模块中view的函数

然后在总的urls利用include函数导入即可

这样也能够实现路由控制。

当然为了避免模块间重名

可以设置一个app名称

路由反转

效果与作用:

我们都是定义某个URL,然后给他对应一个视图函数。

但有时候可能会出现,我们知道一个视图函数,但是不知道他的URL路径的问题。

所以这时候就需要路由反转

urls文件中有这个

from django.urls import path
from . import views

urlpatterns = [
    path('show',views.show_info,name="show_info")
]

有个叫name=show_info

我们反转试一下

from django.shortcuts import render
from django.shortcuts import HttpResponse,reverse
# Create your views here.

def show_info(request):
    num=request.GET.get("num")
    print(reverse("show_info"))
    return HttpResponse(f"你传入了参数数字:{num}")

当这个函数执行时,会反转show_info的路由

当然他不能保留传递的参数,所以想要获得完整路径要自己拼接。

另外,如果App定义了名称的话就需要添加名称才行。

#APP模块urls文件
from django.urls import path
from . import views

#定义App名称
app_name = "num"

urlpatterns = [
    path('show',views.show_info,name="show_info")
]

它定义了app名称,那么我们必须反转的时候这样

#App的views文件
from django.shortcuts import render
from django.shortcuts import HttpResponse,reverse
# Create your views here.


def show_info(request):
    num=request.GET.get("num")
    print(reverse("num:show_info"))
    return HttpResponse(f"你传入了参数数字:{num}")

学习自b站知了传课

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北岭敲键盘的荒漠猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值