django重定向用在哪里?

导读:今天首席CTO笔记来给各位分享关于django重定向用在哪里的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

django 怎么跳转和重定向

跳转和重定向很常见的场景就是登录和注销后返回到当前页面。给你个登录和注销的例子。

比如用户正在浏览一篇文章,发现下载该文章的附件需要登录才能进行,这时候点击登陆链接转入登陆页面,输入用户名密码登陆成功以后,会自动转回原来的那篇文章所在的页面。(目前很多网站采用ajax方法弹出对话框登陆,效果更好一些)

怎么做呢?下面说的是django的实现,但是大多数的web framework都可以这么做。

注销操作:

因为不需要单独的注销页面,相对简单,利用HTTP_REFERER,Django的注销页面这样写就行:

def logout_user(request):

logout(request)

return HttpResponseRedirect(request.META.get(\'HTTP_REFERER\', \'/\'))

登录操作:

登陆操作相对复杂,因为一般都有单独的登陆页面,如果登陆成功再取HTTP_REFERER就是登陆页面自己的url,而不是之前的那个页面。

可以利用django的session,在转入登陆的时候,用的是页面的get请求,这时候在session中记录HTTP_REFERER,用户输入用户名密码进行登陆的时候(Post请求),从session中取出即可:

def login_user(request):

if request.method == \'GET\':

#记住来源的url,如果没有则设置为首页(\'/\')

request.session[\'login_from\'] = request.META.get(\'HTTP_REFERER\', \'/\')

#TODO:显示登陆页面,blablabla

elif request.method == \'POST\':

#TODO: 用户登录操作,blablabla

#重定向到来源的url

return HttpResponseRedirect(request.session[\'login_from\'])

最后的重定向,有时候需要用户感觉到被重定向回去了,就写个简单的页面告诉用户两秒以后跳转,然后改改相应的login代码就行:

p两秒钟后转入如下链接,如果长时间没有响应请直接点击:/p

pa href=\"{{ refresh_url }}\"{{ refresh_url }}/a/p

meta http-equiv=\"refresh\" content=\"2;url={{ refresh_url }}\"

Django使用ajax遇到的关键问题有哪些?

1、如果是post方法,不要忘记加上csrf_token,Djangodoc中关于ajax如何加入csrf_token;

2、注意url和302重定向的问题。

因为http在重定向后是不保留request里的postdata的。所以当发现自己postdata为空的时候,就可以用firebug之类的检查下是不是产生了302重定向。

一般重定向的问题有url/和url之间的重定向。

有时遇到的问题比较少见,就是zh-cn的重定向。因为使用了多语言的设置,所以Django会帮忙把所有的url重定向到以zh-cn开头的url。

当在form里使用{%url%}这个标识符的时候,模板系统会自动加上zh-cn,所以不会重定向。但是当在ajax里手动填写url的时候,如果忘记加上zh-cn就会产生一个重定向,丢失data。

Django框架中path及re_path中name参数的使用和模板渲染(八)

name参数可以给一个匹配的url地址取名字,一般用于模板,也可以使用reverse进行页面重定向。

1、为APP中的books里面的urls.py(给url取个名字)

2、为APP中books里面的views.py(redirect是重定向,reverse是将url的name解析成url本身的函数)

1、 name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。

2、注意事项:

1、模板放在哪?

2、在项目主目录setting.py中进行模板路径配置; 将我们的设置好的存放html模板的templates目录路径添加到DIRS中。

注意:reverse方法里面也可以有kwargs参数,直接将参数传给被reverse解析后要跳转的url路径中的捕获参数,来达到传参的效果。

【Django】路由配置:反向解析、重定向

简单的路由配置

【注意事项】:

(1):若要从URL 中捕获一个值,只需要在它周围放置一对圆括号。

(2):不需要添加一个前导的反斜杠,因为每个URL 都有。例如,应该是^articles 而不是 ^/articles。

(3):每个正则表达式前面的\'r\' 是可选的但是建议加上。它告诉Python 这个字符串是“原始的” —— 字符串中任何字符都不应该转义

(4):urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续

在使用Django 项目时,一个常见的需求是获得URL 的最终形式,以用于嵌入到生成的内容中(视图中和显示给用户的URL等)或者用于处理服务器端的导航(重定向等)。

在需要URL 的地方,对于不同层级,Django 提供不同的工具用于URL 反查:

反向解析的过程:用户通过 /login/ 这个接口 到达urls.py,然后通过 path(\"login/\",views.login,name=\"log\") 到达 views.py(用于视图函数)

在实现逻辑功能时,可能会需要实现重定向的功能。

(1)、通过redirect函数或HttpResponseRedirect函数硬编码的形式

(2)、通过URLconf路由命名空间的形式。

(3)、如果在逻辑函数中不做任何处理,可以直接在url中配置。

django重定向用在哪里?  第1张

django HttpResponseRedirect怎么传递参数

你好!

django重定向时,有时需要传递参数,且先记下一个自己实验OK的方法:

使用session传递:

这种方法的前提是你的框架启动了session,关于怎么启动session,这里贴一段1.6的官方文档的,在跳转之前(HttpResponseRedirect之前),把需要传递的参数保存到request的某个session中,然后跳转到某个url(U),在该url(U)的view方法中,从request的session中,就可以得到传过来的参数。

Django开发总结

forms.py

在完成View逻辑时,我们通常希望将未登录的用户跳转到登陆界面,我们可以采用多种方式:

4.1自行判断

4.2Django工具

Django为我们准备了非常好用的工具,用于处理未登录用户的重定向问题

在Pycharm terminal中直接调哟个pip进行安装时,默认使用全局pip,指定虚拟环境安装,且配置完成project interpreter前提下,采用

结语:以上就是首席CTO笔记为大家介绍的关于django重定向用在哪里的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23
下一篇 2023-09-23

相关推荐

发表回复

登录后才能评论