Django 第二课 1.【URL与视图】

视图函数【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