1.创建Django项目流程:
在工作目录创建一个新目录,用命令行切到内部目录,
执行命令django-admin startproject 项目名
这个时候创建项目成功
2.创建APP应用
我们在项目中的urls中配置路由,在templates 里写HTML文件,如果项目很大,路由很多,HTML文件很多,那么就需要在项目的内部与与项目同名的同级创建APP应用,在APP应用里可以写自己的urls和views 这样主路由中的路由可以映射到APP中的子路由,这个时候就像一个树的根部到树叶扩散。
1)创建APP的方法:
在命令行切换到项目目录中,执行命令 python manage.py startapp APP名称
3.路由基本格式
主路由中设置映射到子路由 ,子路由为app01
path(‘APP/’,include('app01.urls'))
#这个意思就是我们在地址栏中加参数APP时会映射到子路由中,
#假设子路由为path('haha/',views.login)
127.0.0.1:8000/APP 这个时候如果我们在其后在加上haha,就会
调用app01中的视图函数login,根据login函数的返回内容,可以返回一个页面。
例如视图函数login中的内容为return render (request,'login.html'),这个时候调用login会返回一个HTML文件交给浏览器解析,展示给我们相应的内容。
4.使用APP应用时注意事项
1)templates:
我们创建APP时,APP目录下创建一个templates文件夹里面再创建一个最好是与APP名相同的文件夹,再里面创建HTML文件,之所以这么做是为了在每个APP应用下设置路由设置视图返回HTML文件时返回的是本APP应用下templates中的HTML文件,因为如果不这么做,匹配成功返回HTML文件时返回首先从项目最外面的templates中找。如果我们想把这些HTML文件放在自己应用中的templates中,达到和最外面的templates内容分开,也有利于管理。
2)static
在应用的目录下创建static文件夹,文件夹下在创建一个与应用名一样的目录,在里面存放静态文件,如图片、JS文件。
3)在settings中做前期工作
在DIRS中加os.path.join(BASE_DIR,‘templates’) 添加templates 的搜索路径;
STATIC_ROOT=os.path.join(BASE_DIR,‘static’) 添加static搜索路径,同时能够用于搜集静态文件;
在INSTALLED_APPS 下注册APP ‘app01.apps.App01Config’;
5.重定向
在APP中的views中做逻辑判断,如果符合某种条件就显示另一个页面
APP应用中有两个HTML文件,a.html 和b.html ,
主路由中
path('app01/',include('app01.urls'))
子路由
path('login/',views.a)
path('b/',views.b)
视图函数
def b(request):
return render(request,'app01/b.html') #app01下的b.html
def a(request):
return render(request,'app01/a.html')
---------------------------------------------------------------------------------------------------------------------------------------
主路由
path('app01/',include('app01.urls'))
子路由
path('login/',views.a)
path('b/',views.b)
视图b函数
def b(request):
return render(request,'app01/b.html')
def a(request):
return render(request,'app01/a.html')
127.0.0.1:8000/app01/login/ 会调用a函数,a函数返回的是一个HTML文件,展示页面
-----------------------------------------------------------------------------------------------------------------------------------------
def a(request):
某种判断符合条件
重定向到b.html
return redirect('/app01/b/')
return render(request,'app01/a.html')
重定向中我们要获取数据,例如获取表单提交数据,提交表单的方式是POST ,所以可以判断提交方式,然后解析数据 <form action="/app01/login/" method="post"> action 就是数据提交的路径,我们通过路径能找到a函数,所以数据传给了a中的request.
例如:127.0.0.1:8000/app01/login/ 调用了a函数,找到a.html页面;
----------------------------------------------------------------------------------------------------------------------------------------
def a(request):
某种判断符合条件
重定向到b.html
return redirect('/app01/b/')
return render(request,'app01/a.html')
重定向return redirect('/app01/b/') 就好比将127.0.0.1:8000/app01/login/ 变成了
127.0.0.1:8000/app01/b/ 返回的是b.html
6.细节
request.method 获取提交方式
request.POST.get(‘pwd’)获取表单提交中name为pwd 的数据