前言
欢迎来到我的博客
个人主页:北岭敲键盘的荒漠猫-优快云博客
整理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站知了传课