Django URL传递参数的方法总结

1 无参数情况

配置URL及其视图如下:

1
2
3
4
(r'^hello/$', hello)
 
def hello(request):
    return HttpResponse("Hello World")

访问http://127.0.0.1:8000/hello,输出结果为“Hello World”

2 传递一个参数
配置URL及其视图如下,URL中通过正则指定一个参数:

1
2
3
4
(r'^plist/(.+)/$', helloParam)
 
def helloParam(request,param1):
    return HttpResponse("The param is : " + param1)

访问http://127.0.0.1:8000/plist/china,输出结果为”The param is : china”

3 传递多个参数
参照第二种情况,以传递两个参数为例,配置URL及其视图如下,URL中通过正则指定两个参数:

1
2
3
4
(r'^plist/p1(\w+)p2(.+)/$', helloParams)
 
def helloParams(request,param1,param2):
    return HttpResponse("p1 = " + param1 + "; p2 = " + param2)

访问http://127.0.0.1:8000/plist/p1chinap22012/
输出为”p1 = china; p2 = 2012″

从这里可以看出,视图的参数是根据URL的正则式,按顺序匹配并自动赋值的。虽然这样可以实现任意多个参数的传递,但是却不够灵活,URL看起来很混乱,而且由于是正则匹配,有些情况下容易出错。

4 通过传统的”?”传递参数
例如,http://127.0.0.1:8000/plist/?p1=china&p2=2012,url中‘?’之后表示传递的参数,这里传递了p1和p2两个参数。

通过这样的方式传递参数,就不会出现因为正则匹配错误而导致的问题了。在Django中,此类参数的解析是通过request.GET.get方法获取的。

配置URL及其视图如下:

1
2
3
4
5
6
(r'^plist/$', helloParams1)
 
def helloParams(request):
    p1 = request.GET.get('p1')
    p2 = request.GET.get('p2')
    return HttpResponse("p1 = " + p1 + "; p2 = " + p2)

输出结果为”p1 = china; p2 = 2012″
本文链接地址: http://www.icodelogic.com/?p=501

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Django中,可以使用redirect函数来重定向到另一个URL,并且可以传递参数。例如: ``` from django.shortcuts import redirect def my_view(request): # 处理逻辑 my_param = 'hello' return redirect('my_other_view', param=my_param) def my_other_view(request, param): # 处理逻辑 return HttpResponse('Param: {}'.format(param)) ``` 在上面的例子中,当my_view被调用时,它会重定向到my_other_view,并传递参数param。在my_other_view中,可以通过参数来获取传递的值。 ### 回答2: Django的redirect重定向函数可以用于重定向URL进行页面跳转。在应用中,我们可能需要让用户执行某些操作并带有参数,然后重定向到另一个页面。比如,在处理搜索表单提交时,我们需要对用户输入的关键字进行处理并将结果呈现给用户。这时候就需要用到redirect函数传递参数。 具体实现方法如下: 1.在处理视图函数中,从请求中获取所有需要的参数,并根据业务逻辑做相应的处理。 2.将参数组织成一个字典类型,并将其作为redirect函数的参数,将请求重定向到需要跳转的URL。如下: ``` python from django.shortcuts import redirect def search(request): # 处理用户提交的搜索请求 keyword = request.GET.get('keyword') # 处理搜索结果 results = [] # ... # 将结果作为参数进行跳转 return redirect('/results', {'results': results}) ``` 在上述代码中,我们将搜索出来的结果存储在一个results列表中,并将其传递给了redirect函数。redirect函数在跳转时将参数封装在URL中,如下: ``` http://localhost:8000/results?results=[1,2,3] ``` 3.在跳转到指定URL的视图函数中,从请求对象中获取参数并作为模板的上下文变量呈现给用户。 ``` python def results(request): results = request.GET.get('results', []) context = {'results': results} # 呈现结果页面 return render(request, 'results.html', context) ``` 在上述代码中,我们从请求中获取了results参数并将其放入了模板的上下文变量中,然后呈现了结果页面。 总之,通过使用 Django 的 redirect 函数,我们可以在页面之间传递参数。这个步骤是由将参数包含在 URL 重定向的过程来实现的。我们在重定向到 URL 时,只需要将参数以字典的形式传递给 redirect 函数即可。被重定向到的视图处理这些参数后,又可以将处理后的数据渲染到相应的页面中呈现给用户。 ### 回答3: Django中,redirect函数可以用于将用户重定向到指定的URL,同时也可以传递参数。在管理后台中,当我们点击添加或编辑某个模型时,URL会包含一个参数pk,表示该模型的主键值。我们可以利用redirect函数将用户重定向到某个URL,并传递pk参数。 例如,我们有一个视图函数edit,用于编辑某个文章的详情。文章的主键值是article_id。我们可以使用以下代码来传递article_id参数,并将用户重定向到URL:/article/detail/: ```python from django.shortcuts import redirect def edit(request, article_id): # do something return redirect('/article/detail/?article_id={}'.format(article_id)) ``` 这里,我们使用了字符串格式化,将article_id插入到URL中。不过这种方式并不够优雅。在Django中,我们可以使用reverse函数来动态生成URL,而不必硬编码。具体做法是将视图函数的名称作为参数传递给reverse函数,Django会自动根据视图函数的名称生成URL。 例如,我们有一个名为detail的视图函数,用于展示某篇文章的详情。我们可以将视图函数的名称作为参数传递给reverse函数,生成URL,并使用redirect函数将用户重定向到该URL。 ```python from django.urls import reverse from django.shortcuts import redirect def edit(request, article_id): # do something url = reverse('detail', kwargs={'article_id': article_id}) return redirect(url) ``` 这里,我们指定了视图函数的名称detail,并传递了一个字典类型的关键字参数kwargs,用于传递article_id参数Django会自动根据视图函数的名称和传递参数,生成对应的URL。我们可以将生成的URL存储到变量url中,然后使用redirect函数将用户重定向到该URL。 以上是关于Django redirect传递参数的一些介绍和示例。在实际开发中,我们经常需要将用户重定向到不同的URL,并传递多个参数。通过使用reverse函数,我们可以动态生成URL,使得我们的代码更加灵活和易于维护。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值