django web学习 (传递参数)

197 阅读1分钟

url传递参数

1.采用在url中使用变量的方式,在path的第一个参数中使用‘<参数名>’可以传递参数。
然后在视图函数中也要传递一个参数,并且保证两个参数名保持一致。url可以传递多个参数
2.查询字符串
在url中,不需要单独匹配查询字符串的部分,只需要在视图函数中使用‘request.GET.get('参数名称')’的方式来获取

示例代码如下

#字符匹配
def author_detail(requset):
    author_id = requset.GET.get('id')
    test = '作者的id是%s'%(author_id)
    return HttpResponse(test)

因为查询字符串使用的是GET请求,所以通过request.GET[]来获取参数,GET是一个类似字典的数据类型。

url命名

url是经常变化的,如果写死了难以更改,给url唯一id,修改时使用唯一id修改就行 在path函数中,传递参数name的属性就可以指定id,示例如下:

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

给url唯一的标识符,便于重定向,利用函数reverse(‘名字’)反转到该url.

return redirect(reverse('login'))

为了多个app之间命名冲突,应该给每个app也取一个唯一id(命名空间),利用reserse('命名空间:名字')找到指定url.

#应用命名空间
app_name = 'front'

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

在视图函数中指定:

return redirect(reverse('front:login'))

进行反转