Django中多种重定向方法使用

本文主要讲解使用HttpResponseRedirect、redirect、reverse以及配置文件中配置URL等重定向方法

本文使用了Django1.8.2
使用场景,例如在表单一中提交数据后,需要返回到另一个指定的页面即可使用重定向方法

一、 使用HttpResponseRedirect
● fuhao The first argument to the constructor is required – the path to redirect to. This can be a fully qualified URL or an absolute path with no domain。”参数可以是绝对路径跟相对路径”

from django.http import HttpResponseRedirect  

@login_required  
def update_time(request):  
    #表单处理OR逻辑处理  
    return HttpResponseRedirect('/')  #跳转到主界面  
#如果需要传参数
return HttpResponseRedirect('/commons/index/?message=error')

二 redirect和reverse

from django.core.urlresolvers import reverse  
from django.shortcuts import redirect  
#https://docs.djangoproject.com/en/1.8.2/topics/http/shortcuts/  

@login_required  
def update_time(request):  
    #进行要处理的逻辑  
    return redirect(reverse('test.views.invoice_return_index', args=[]))  #跳转到index界面  

redirect 类似HttpResponseRedirect的用法,也可以使用 字符串的url格式 /..index/?a=add
reverse 可以直接用views函数来指定重定向的处理函数,args是url匹配的值。

三、 其他

#其他的也可以直接在url中配置
from django.views.generic.simple import redirect_to 
在url中添加 (r'^test/$', redirect_to, {'url': '/author/'}), 

#我们甚至可以使用session的方法传值
request.session['error_message'] = 'test'  
redirect('%s?error_message=test' % reverse('page_index'))  
#这些方式类似于刷新,客户端重新指定url。

#重定向,如果需要携带参数,那么能不能直接调用views中 url对应的方法来实现呢,默认指定一个参数。
#例如view中有个方法baseinfo_account, 然后另一个url(对应view方法为blance_account)要重定向到这个baseinfo_account。
#url中的配置:
urlpatterns = patterns('',  
    url(r'^index/', 'account.views.index_account'),  
    url(r'^blance/', 'account.views.blance_account'),  
)  
# views.py
@login_required  
def index_account(request, args=None):#按照正常的url匹配这么写有点不合适,看起来不规范  if args:  
        print args  
    return render(request, 'accountuserinfo.html', {"user": user})  


@login_required      
def blance_account(request):  
    return index_account(request, {"name": "orangleliu"}) 
#测试为:
#1 直接访问 /index 是否正常 (测试ok)
#2 访问 /blance 是否能正常的重定向到 /index页面,并且获取到参数(测试ok,页面为/index但是浏览器地址栏的url仍然是/blance)
#这样的带参数重定向是可行的。
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Django 的 redirect() 函数用于重定向到另一个页面。使用方法如下: ``` from django.shortcuts import redirect def my_view(request): return redirect('/some/url/') ``` 在上面的代码,当访问 my_view 函数时,将会重定向到 "/some/url/"。 ### 回答2: 在Django,redirect()是一个用于重定向网页的快捷函数。它可以将用户重定向到指定的URL或视图。redirect()函数返回一个HttpResponseRedirect对象,并将其发送给浏览器,使浏览器请求新的页面。 例如,假设我们有一个网站,其包含两个页面:一个是主页,另一个是关于页面。 首先,在我们的项目创建一个urls.py文件并定义两个URL模式: ```python from django.urls import path from . import views app_name = 'myapp' urlpatterns = [ path('', views.home, name='home'), path('about/', views.about, name='about'), ] ``` 然后,我们在views.py文件编写两个视图函数: ```python from django.shortcuts import render, redirect def home(request): return render(request, 'home.html') def about(request): return render(request, 'about.html') ``` 在上面的代码,home()函数返回一个渲染的主页模板,about()函数返回一个渲染的关于页面模板。 接下来,我们可以在视图函数使用redirect()函数将用户重定向到其他页面。例如,如果用户访问主页时未登录,我们希望将其重定向到登录页面: ```python from django.shortcuts import render, redirect def home(request): if not request.user.is_authenticated: return redirect('myapp:login') return render(request, 'home.html') ``` 在上述代码,如果用户未通过身份验证(即未登录),则将使用redirect()函数将其重定向到名为"login"的URL模式。 这是使用redirect()重定向的示例。可以使用这个函数在Django应用程序轻松实现页面之间的导航和流程控制。 ### 回答3: django的redirect()函数用于将用户重定向到指定的URL。它是django.shortcuts模块的一个函数,需要传递一个参数——目标URL。 下面给出一个示例来说明如何使用redirect()函数: 首先,在你的视图函数导入redirect函数: ```python from django.shortcuts import redirect ``` 然后,在你的视图函数使用redirect函数来指定要重定向的URL: ```python def my_view(request): # 重定向到 '/about/' 页面 return redirect('/about/') ``` 在这个例子,当用户访问`/my_view/`时,视图函数`my_view`将会使用`redirect()`函数将用户重定向到`/about/`页面。 你也可以将其用于动态的URL,例如: ```python def my_view(request): # 定义一个变量来存储URL redirected_url = '/about/' # 检查用户的权限,根据权限动态地改变重定向URL if user.has_perm('myapp.can_access_admin_panel'): redirected_url = '/admin/' # 重定向到相应的URL return redirect(redirected_url) ``` 在这个例子,根据用户的权限,如果用户有权限访问管理员面板,则将其重定向到`/admin/`,否则将其重定向到`/about/`。 此外,你还可以使用命名URL模式来进行重定向,例如: ```python from django.urls import reverse def my_view(request): # 获取my_another_view的命名URL redirected_url = reverse('myapp:my_another_view') # 重定向到指定的URL return redirect(redirected_url) ``` 在这个例子使用`reverse()`函数来获取名为`myapp:my_another_view`的视图函数的URL,然后使用`redirect()`函数将用户重定向到该URL。 通过使用redirect()函数,我们可以方便地将用户重定向到指定的URL,无论是固定的URL还是动态的URL。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值