博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django 第二课 1.【URL与视图】
阅读量:4313 次
发布时间:2019-06-06

本文共 1406 字,大约阅读时间需要 4 分钟。

视图函数【views.py】

 

1:视图函数的第一个参数必须是request,这个参数绝对不能少

2:视图函数的返回值必须是 djang.http.respomnse.HttpResponseBase 的子类的对象

 

【url.py】传递参数

## url映射

1:为什么回去url.py文件中寻找映射呢?

是因为在 setting.py 文件中配置了 ROOT_URLCONFurl.py 。 所以django会去 url.py 中寻找

2:在 url.py 中我们所有的映射,都应该放在 urlpatterns 这个变量中

3:所有的映射不是随便写的,而是使用 path 函数 或者是 re_path 函数进行包装的

 

## url传参数

1:采用在url中使用变量的方式:在path的第一个参数中,使用‘<参数名>’ 的方式可以传递参数。然后在视图函数中也要写一个参数,视图函数中的参数必须和url中的参数名称保存一致,不然就找不到这个参数,另外,url中可以传递多个参数

2:采用查询字符串的方式: 在url中,不需要单独的匹配查询的字符串的部分。只需要在视图函数中使用request.GET.get('参数名称') 的方式来获取,示例代码

def author_detail(request):   author_id = request.GET['id']   text = '作者的id是: %s' % author_id   return HttpResponse(text)

因为查询字符串使用的是‘GET’请求,所以我们通过‘request.GET’来获取参数,并且因为‘GET’是一个类似于字典的数据类型,所有获取值跟字典的方式都是一样的。

 

## url命名

1:为什么需要url命名

因为url是经常变化的,如果在代码中写死可能经常改代码。给url去个名字,以后使用url的时候就使用它的名字进行反转就可以了,就不需要写死url了

 

2:如果给一个url指定名称?

在 path 函数中,传递一个 name 参数

urlpatterns = [       path(' ',  views.index, name = 'index'),       path('login/ ',  views.login, name = 'login')]

 

3: 应用命名空间

在多个app之间,有可能产生同名的url。者时候为了避免反转url的时候产生混淆,可以使用应用命名空间,来区分。定义应用命名空间非常简单,只要在 ‘app’ 的 ‘url.py’ 中定义一个叫做  ‘app_name’ 的变量,来指定这个应用的命名空间即可。示例代码如下:

#应用命名空间app_name = 'front'urlpatterns = [       path(' ',  views.index, name = 'index'),       path('login/ ',  views.login, name = 'login')]

以后在做反转的时候就可以使用 '应用命名空间:url名称' 的方式进行反转,示例代码如下

login_url = reverse('front: login')

 

转载于:https://www.cnblogs.com/nelsen-chen/p/9439044.html

你可能感兴趣的文章
web.xml 配置中classpath: 与classpath*:的区别
查看>>
suse如何修改ssh端口为2222?
查看>>
详细理解“>/dev/null 2>&1”
查看>>
suse如何创建定时任务?
查看>>
suse搭建ftp服务器方法
查看>>
centos虚拟机设置共享文件夹并通过我的电脑访问[增加smbd端口修改]
查看>>
文件拷贝(IFileOperation::CopyItem)
查看>>
MapReduce的 Speculative Execution机制
查看>>
大数据学习之路------借助HDP SANDBOX开始学习
查看>>
Hadoop基础学习:基于Hortonworks HDP
查看>>
为什么linux安装程序 都要放到/usr/local目录下
查看>>
Hive安装前扫盲之Derby和Metastore
查看>>
永久修改PATH环境变量的几种办法
查看>>
大数据学习之HDP SANDBOX开始学习
查看>>
Hive Beeline使用
查看>>
Centos6安装图形界面(hdp不需要,hdp直接从github上下载数据即可)
查看>>
CentOS7 中把yum源更换成163源
查看>>
关于yum Error: Cannot retrieve repository metadata (repomd.xml) for repository:xxxxxx.
查看>>
2020-11-18
查看>>
Docker面试题(二)
查看>>