版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43908900/article/details/94463842
这是Django的第一部分:关于url跟视图的相关知识,下面请看操作:
ROOT_URLCONF
为urls.py
。所有django会去urls.py
中寻找。urlpatterns
这个变量中,不要问为什么,因为我也不知道。映射的前提是需要使用path
与re_path
函数,区别是,后者比前者多了一个功能:使用正则法则,后面会详细说这一点。 采用在url中使用变量的方式:在path的第一个参数中,使用<参数名>
的方式可以传递参数。然后在视图函数中也要写一个参数,视图函数中的参数必须和url中的参数名称保持一致,不然就找不到这个参数。另外,url中可以传递多个参数。
上面说的可能比较抽象,详细解说一下:这里是一个对应的过程。。。。
这种一一对应的,第一个函数是在views.py(视图函数中)、第二个是在url.py中,结合上面文字加深理解。
上面是使用变量的方式进行传参的,下面我们使用一个高大上的,查询字符串的方式。我们只需要在视图函数中使用request.GET.get('参数名称')
的方式来获取。示例代码如下:
def author_deatil(request):
author_id = request.GET.get('id')
text = "作者的id是:%s" %author_id
return HttpResponse(text)
暂时带过,后面会具体讲解
/
以外所有的字符都是可以的。uuid.uuid4()
这个函数返回的字符串的格式。想一个实际问题,随着我们的项目越来越大,填写的内容越来越多,把所有的url全部放在主urls.py中是不是不利于管理,所以后面我们需要在自己创建的APP中存放自己的urls进行管理==》基本操作,在APP中新建一个urls.py进行存储该应用的子url。
管理子url后,就涉及到新的概念include函数,我们日常都是用该函数进行管理。
#主程序中的urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('book',include('book.urls'))
]
app
的urls.py
中,所有的url匹配也要放在urlpatterns
的变量中,否则找不到。url
是会根据主urls.py
和app中的urls.py
进行拼接的,因此注意不要多加斜杠。include(module,namespace=None):
urls.py
中添加app_name
变量。include((pattern_list, app_namespace), namespace=None):
include函数的第一个参数既可以为一个字符串,也可以为一个元组。
如果是元组,那么元组的第一个参数是子urls.py
模块的字符串,元组的第二个参数是应用命名空间。也就是说,应用命名空间既可以在子urls.py
中通过app_name
指定,也可以在include
函数中指定:
#app_name = font ==》这是应用命名
#namespace=list_id ==》是实例命名空间
path('font/',include(
path('',views.font,namespace) #url:font/
path('list_id/',views.font_list,namespace = list_id) #url:font/list_id
))
未完待续。。。。。
鸡汤:学习不是三分钟的热血,而是一辈子所为之努力的,加油吧,骚年!