一个项目有多个APP,如果你要实现其中的一个APP功能,怎么做?接下来看:
第一步:你已经创建好了一个项目
第二步:你已经在项目下创建好了一个APP
第三步:你已经把APP添加到中间件里了(图片一)
第四步:然后更改你的urls,改成这个样子(图片二)
第五步:然后进入你的APP里面,找到“views”这个.py文件,然后里面写上(图片三)
第六步:启动服务
第七步:把地址改为:http://127.0.0.1:8000/index/
第八步:看效果(图片四)
————————————————————————————————————————————————————————————————————————
疑问①:urls中的路由前面为什么会有“index”?
答:他是告诉你访问的时候在那个路径下,如果不写默认的是根目录,也就是http://127.0.0.1:8000,
如果写了就变成http://127.0.0.1:8000/index/。
疑问②:还是不懂!
答:我写的按照PEP8来说是不规范的,因为url后面跟的是你的APP的模块名字,如果你的APP名字是“fuck”的话,那么你的urls这样写
“path('fuck/', views.index)”,这样就变成了http://127.0.0.1:8000/fuck/,这样可以让别人知道这是访问的你“fuck”APP下面的功能函数。
疑问③:如果我想中间加一个路径怎么办?比如:http://127.0.0.1:8000/fuck/you/怎么办?
答:往下看!算了,先说吧,可以使用路由的“include”进行路由分发,接下来会说
————————————————————————————————————————————————————————————————————————————
URL中的name是什么?
在一个项目中通常会看到一个路由内有这么一个写法:
path("XXX/",views.XXX,name="XXX"),
特么的这个name是个什么东西?为什么要写它?其实:
这个东西很重要,因为在项目中经常会根据它来寻找视图函数以及在网址更改的情况下,只要它没改,你照样可以访问。
不懂?不懂就对了,对于新人来说不懂就对了,看代码吧!
第一步:回到最开始的项目上(你时间充足也可以再新建一个项目和APP)
第二步:更改url(图片五)
第三步:新建一个html文件(图片七)
第四步:更改视图函数(图片六)
第五步:在html文件中随便写点东西(图片八)
第六步:没毛病了,看第七步
第七步:运行系统
我的第一个系统起来了,url是:http://127.0.0.1:8000/batman/,但是老板说他不喜欢蝙蝠侠,喜欢超人,所以我这个得改,我能咋办?
改呗,然后我就改,但是你会发现:如果这样写“死网址”,
会使得在改了网址后,模板,视图(比如用于URL跳转),模型(获取记录访问地址等),用了此网址的,都必须进行相应的更改,修改的代价很大,一不小心,有的地方没改过来,就不能用了。
咋办?幸亏我有先见之明,我在每个url后面都留了个“name”,嘿嘿..........,傻笑什么,撸代码去!得嘞,您老儿说得对,我麻利儿的就开始改,改完之后一看效果:66666666666666
怎么改的?接着看例子:
第一步:增加url(图片九)
第二步:修改视图(图片十)
第三步:看效果呀!!
然后你会发现,你再输入“batman”的时候,它会变成“supman”,但是功能没变,如果你想让它变............操!事儿多!你在视图函数中直接添加一条对应的url的视图函数不得了!
________________________________________________________________________________________
原理:
当你请求过来之后,你输入“batman”之后,它会执行“index2”函数,因为这个函数是你事先写好的专门跳转用的,然后它会根据“reverse”去寻找你的“name=batman”的url,找到之后它就会执行这个url代码,然后做相应的处理
接下来你就会看到“supman”对应的功能了,但是你的本来的功能代码却没有改变,变得只是你的url
————————————————————————————————————————————————————————————————————————————————————————————
回答疑问③:
urls中有一个参数叫做“include”,这个是专门用来进行路由分发的,源码就不说了,会晕............
如何操作?往下看
第一步:在APP中添加url.py文件(图片十一)
第二步:修改根url(图片十二)
第三步:修改APP下的的urls.py文件(图片十三)
第四步:修改视图函数(图片十四)
第五步:看效果啊!!!(http://127.0.0.1:8000/wondwom/look/)
——————————————————————————————————————————————————————————————————
代码部分:
根urls: from django.contrib import admin from django.urls import path,include from batman1 import views urlpatterns = [ path('admin/', admin.site.urls), path('batman/', views.index2), path('supman/', views.index,name="batman"), ] APP的视图函数: from django.shortcuts import render,HttpResponse,HttpResponseRedirect from django.urls import reverse # 调用模块 def index(request): return render(request,"index.html") def index2(request): return HttpResponseRedirect(reverse("batman"))
根urls: from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('wondwom/', include("batman1.urls")), ] APP中的urls: from django.urls import path from . import views # 同级目录下用"." urlpatterns = [ path('look/', views.look), ] APP中的视图函数: from django.shortcuts import render,HttpResponse,HttpResponseRedirect def look(request): return HttpResponse("-------------> OK")