django如何跳转地址(2023年最新解答)

高分请分析下,django如何跳转地址(2023年最新解答)
最新回答
小昊昊

2024-12-02 02:37:06

导读:很多朋友问到关于django如何跳转地址的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

请教各位高手Django的url配置问题

流线型化(streamlinling)函数导入

1:直接导入视图函数

fromdjango.conf.urls.defaultsimport*

frommysite.viewsimporthello

urlpatterns=patterns('',

(r'^hello/$',hello),

(r'^time/$',time),

)

2:导入包函模块名和函数的客串,而不是函数本身

fromdjango.conf.urls.defaultsimport*

frommysiteimportviews

urlpatterns=patterns('',

(r'^hello/$','views.hello'),

(r'^time/$','views.time'),

)

3:不用导入任何视图内容,写清楚字符串描述

fromdjango.conf.urls.defaultsimport*

urlpatterns=patterns('',

(r'^hello/$','mysite.views.hello'),

(r'^time/$','mysite.views.time'),

)

4:提取一个公共视图前缀

fromdjango.conf.urls.defaultsimport*

urlpatterns=patterns('mysite.views',

(r'^hello/$','hello'),

(r'^time/$','time'),

)

5:partterns()返回对对象的相加

旧:

fromdjango.conf.urls.defaultsimport*

urlpatterns=patterns('mysite.view',

(r'^hello/$','hello'),

(r'^time/$','time'),

(r'^other/$','mysite.others.other'),

)

新:

fromdjango.conf.urls.defaultsimport*

urlpatterns=patterns('mysite.view',

(r'^hello/$','hello'),

(r'^time/$','time'),

)

urlpatterns+=patterns('mysite.others',

(r'^other/$','other'),

)

6:到目前为止,在所有URLconf例子中,我们使用的很简单,即“无命名”正则表达式组,在我们

想要捕获的URL部分加上小括号,django会将捕获的文本作为位置参数传递给视图函数。在更

高级的用法中,还可以使用“命名”正则表达式组来捕获URL,并且将其作为“关键字”参数传给视图。

在python正则表达式中,命名的正则表达式组的语法是(?pnamepattern),这里name是组的名字,而pattern是匹配的某个模式。

下面是一个使用无名组的URLconf的例子:

fromdjango.conf.urls.defaultsimport*

frommysiteimportviews

urlpatterns=patterns('',

(r'^arcticles/(\d{4})/$',views.year_archive),

(r'^arcticles/(\d{4})/(\d{2})/$',view.moth_archive),

)

下面是相同的URLconf,使用命名组进行了重写:

fromdjango.conf.urls.defaultsimport*

frommysiteimportviews

urlpatterns=patterns('',

(r'^arcticles/(?Pyear\d{4})/$',veiws.year_archive),

(r'^arcticles/(?Pyear\d{4})/(?Pmonth\d{2})/$',veiws.month_archive),

)

如果不带命名组,请求/arcticle/2006/03/将会等于这样的函数调用:

month_archive(request,'2006','03')

而带命名组,同样的请求就是这样的函数调用:

month_archive(request,year='2006',month='03')

从中可以看出,使用命名组可以让你的URLconf更加清晰,减少参数次序可能搞混潜在的Bug,

还可以让你的定义中对参数重新排序。

7:视图冗余:

#urls.py

fromdjango.conf.urls.defaultsimport*

frommysiteimportviews

urlpatterns=patterns('',

(r'^(foo)/$',views.foobar_view),

(r'^(bar)/$',views.foobar_view),

)

#views.py

fromdjango.shortcutsimportrender_to_response

frommysite.modelsimportMyModel

deffoobar_view(request,url):

m_list=MyModel.objects.filter(is_new=True)

ifurl=='foo':

template_name='template1.html'

elifurl=='bar':

template_name='template2.html'

returnrender_to_response(template_name,{'m_list':m_list})

利用上面的方法可以减少视图冗余

8:为url里传入固定的参数:

#urls.py

fromdjango.conf.urls.defaultsimport*

frommysiteimportviews

urlpatterns=patterns('',

(r'^foo/$',views.foobar_view,{'template_name':'template1.html'}),

(r'^bar/$',views.foobar_view,{'template_name':'template2.html'}),

)

#views.py

fromdjango.shortcutsimportrender_to_response

frommysite.modelsimportMyModel

deffoobar_view(request,template_name):

m_list=MyModel.objects.filter(is_new=True)

returnrender_to_response(template_name,{'m_list':m_list})

一些URL参数详解:

/mydata/jan/01/

/mydata/jan/02/

/mydata/jan/03/

以上为三个url我们可以用不同的方式实现

1:(r'^mydata/(/w{3})/(/d/d)',views.mydata)mydata(request,'jan','01')

2:(r'^mydata/(?Pmonth/w{3})/(?Pday/d/d)',view.mydata)mydata(request,month='jan',day='01')

3:(r'^mydata/birthday/$',views.mydata,{month:'jan',day:'01'})mydata(request,month='jan',day='01')

9:include导入:

fromdjango.conf.urls.defaultsimport*

urlpatterns=patterns('',

(r'^weblog/',include('mysite.blog.urls')),

(r'^photos/',include('mysite.photos.urls')),

(r'^about/$','mysite.views.about'),

)

10:实例:

验证用户是否登录:

以下是三个视图

defmy_view1(request):

ifnotrequest.user.is_authenticated():

returnHttpResponseRedirect('/accounts/login/')

#...

returnrender_to_response('template1.html')

defmy_view2(request):

ifnotrequest.user.is_authenticated():

returnHttpResponseRedirect('/accounts/login/')

#...

returnrender_to_response('template2.html')

defmy_view3(request):

ifnotrequest.user.is_authenticated():

returnHttpResponseRedirect('/accounts/login/')

#...

returnrender_to_response('template3.html')

以下是对视图进行包装:

defrequires_login(view):

defnew_view(request,*args,**kwargs):

ifnotrequest.user.is_authenticated():#如果用户没有登录,跳转到登录界面

returnHttpResponseRedirect('/accounts/login/')

returnview(request,*args,**kwargs)#否则返回传进来的方法

returnnew_view#返回new_view值:登录视图或者是传进来的视图

以下为URL配置:

fromdjango.conf.urls.defaultsimport*

frommysite.viewsimportrequires_login,my_view1,my_view2,my_view3

urlpatterns=patterns('',

(r'^view1/$',requires_login(my_view1)),

(r'^view2/$',requires_login(my_view2)),

(r'^view3/$',requires_login(my_view3)),

)

django模版,模版上的链接,点击后打开ftp的地址。如何实现?

FTP上传模板这个问题,虽有点不太明你具体疑问!如果,只是想把本地模板上传到主机空间已安装好的如WP、DEDE类的程序里去,直接把文件全选上传到空间程序对应的文件夹去,如Wordpress还可以在后台控制面板添加主题里上传上去!

求助,关于Django跳转后css路径问题

应该是给后面大层的背景图,因为有float:left;所以在下面一个层一定要清楚浮动。

最好能有测试地址,因为有不同的原因都会导致上面的错误。

django本地重定向外网

相对简单,利用HTTP_REFERER,Django的注销页面这样写就行:

deflogout_user(request):

logout(request)

returnHttpResponseRedirect(request.META.get('HTTP_REFERER','/'))

登录操作:

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

django跳转到登陆前的意向页面

我理解你其实想要保存用户先前访问的页面是吧?

如果是这样,你根本无须写那么一大堆,Django的request.path里就封装了原来的页面地址url,直接使用就可以了!这就是Django的贴心之处。

去刘江的DJango教程看看把,免费的,而且项目实战很精彩。

Django写的LoginView,登录成功后无法跳转回原页面,求助

Youdonotneedtomakeanextraviewforthis,thefunctionalityisalreadybuiltin.

Firsteachpagewithaloginlinkneedstoknowthecurrentpath,andtheeasiestwayistoaddtherequestcontextpreprosessortosettings.py(the4firstaredefault),thentherequestobjectwillbeavailableineachrequest:

settings.py:

TEMPLATE_CONTEXT_PROCESSORS=(

"django.core.context_processors.auth",

"django.core.context_processors.debug",

"django.core.context_processors.i18n",

"django.core.context_processors.media",

"django.core.context_processors.request",

)

ThenaddinthetemplateyouwanttheLoginlink:

base.html:

ahref="{%urldjango.contrib.auth.views.login%}?next={{request.path}}"Login/a

ThiswilladdaGETargumenttotheloginpagethatpointsbacktothecurrentpage.

Thelogintemplatecanthenbeassimpleasthis:

registration/login.html:

{%blockcontent%}

formmethod="post"action=""

{{form.as_p}}

inputtype="submit"value="Login"

/form

{%endblock%}

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