名医指导 足不出户寻医问药
聚焦健康 权威的健康资讯
您的位置: 首页> 正文

django如何用注解url(2023年最新分享)

发布网友 发布时间:2024-10-24 09:52

我来回答

1个回答

热心网友 时间:2024-11-12 18:45

导读:本篇文章首席CTO笔记来给大家介绍有关django如何用注解url的相关内容,希望对大家有所帮助,一起来看看吧。

请教各位高手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中获取URL上的参数

在django中获取URL上的参数:

URL='admin/action?name=xxxpwd=xxx'以上格式中,name和pwd是html中表单标记的id,比如一个input的ID。xxx代表一个值,可以是固定,也可以是js获取的input输入框的值等。

Django媒体文件URL的配置

在Django中经常需要配置图片、视频等表态文件,在配置时较为复杂,这里纪录一下:

在文件尾部加入以下目录,用于存放上传的文件

在models中写上image字段其中%Y代表年,%m代表月,blank=True代表可以为空。当上传文件时,代表上传到image目录下,以当前年月子目录的文件夹中。

image=models.ImageField(upload_to="image/%Y/%m",blank=True)

其中src中的{{MEDIA_URL}}会在模板中渲染为第一步中的/media/

如果您想在模板中使用{{MEDIA_URL}},请在“模板”的“context_processors”选项中添加django.template.context_processors.media。

通过以上步骤,基本上可以在前端正常渲染出结果了,但还需要给图片添加一个URL以正常显示。

第一行为引入静态文件的serve,第二行为导入工程配置文件中的MEDIA_ROOT

在url中加入:

Django中关于URL配置文件urls.py的理解

1.什么是urls.py

2.?urls.py文件位置

3.?urls.py配置格式

urlpatterns=patterns('视图前缀',

??url(r'^正则表达式1/$','视图函数1',name="url标识1"),

??url(r'^正则表达式2/$','视图函数2',name="url标识2"),

)

4.?urls.py如何工作

Django中url与path及re_path区别

初学者一般不能分清两者的区别,所这简单介绍下两者.首先,url是Django1.x中的写法,p在Django2.1中,开始舍弃django1.x中的url写法。在django2.x中,描写url配置的有两个函数path和re_path.re_path()函数可以看做是django1.x中得url函数,即可以在路径中使用正则.

path与url是两个不同的模块,效果都是响应返回页面,path调用的是python第三方模块或框架,而url则是自定义的模块,如Views下的def函数对应你url中的参数值.

例如:

在settings.py文件中有一个ROOT_URLCONF设置,设置的是在访问网址时通过哪一个url文件去匹配所请求的网址

url或者re_path要复杂一些(r’^blog/(?P[0-9]{4})/′)首先需要开始符和结尾符')首先需要开始符^和结尾符′)首先需要开始符和结尾符,参数匹配一个()就是一个匹配参数,

(?P匹配的字段名正则表达式)

进行匹配是不包括get或者post请求方式的参数及域名比如并不会匹配?后边的字符

可以给request参数设置一个默认值,最常见的分页url,比如

自定义错误页面关键字handler400=blog.views.page_no_find

参数的使用方法path(‘blog/str:string/’)简单了很多,就是尖括号,前边是str代表参数的类型,后面代表参数的名称

捕获url中的参数需要用到尖括号指定尖括号中的值类型比如int:astr:link这个转换器还有许多类型比如:

如果遇上路径和转换器语法都不足以定义的URL模式,那么就需要使用正则表达式,这时候就需要使用re_path(),而非path()。

举例:传递数字结尾的参数

在python3中使用django2的时候,在设置urls的时候,会遇到一些坑。这里做一下记录。

系统的urls.py里,在1.X的时候,都是采用的url方式。如下

在2.0中,它推荐使用的是path模块,所以这里就改写一下。引包

注意:

1.x里面的写法是

现在的写法

这样一对比就能明白了吧,使用的链接是;key=abc

1.x中写法

可是在2.0中你这么写,会报错,说什么app_name的,这个自己可以看一下,怎么解决呢,其实很简单,只要在自己项目urls.py中加上这句就行了.如果不加的话可能报错,

注:

djangoa标签传递参数,urls.py要怎么写

可以使用url里面自带的name的方法。

对于像a这样链接的操作。用法:不带参数的:{%url'name'%}带参数的:参数可以是变量名{%url'name'参数%}所以这里的改变为:url('^login_first/$',views.login,name="login_first")(对于其他部分自动补脑),在ahref="{%url'login_first'%}".

解释:{%url'login_first'%},这里的login_first代表着这个url自动去寻找django的url里面name="login_first"这个条链接,并将前面的url赋给a标签中的href。

结语:以上就是首席CTO笔记为大家整理的关于django如何用注解url的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django如何用注解url的相关内容别忘了在本站进行查找喔。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
彻底详细解释 一般纳税人可以 开具普通发票给一般纳税人吗? 如何护理肌肤能改善肤色暗沉? 有什么方法可以改善皮肤暗沉的问题? 除了使用美白产品,还有哪些方式可以改善肌肤暗沉的问题? 怎样护肤可以改善肤色暗沉的问题? 如何做淘宝优惠券推广?能赚钱吗? 抖音商品如何上架优惠卷?优惠券怎么做? 我想问一下我有个店铺,法人不是我经营者是我,得怎么打官司? ug是什么(关于ug是什么的基本详情介绍) ug是什么意思(ug是什么) 超越前端Beyond Frontend — 吉密斯/gMIS 增加点选/PickUp概览功能_百 ... 最好用的 5 个 Vue select 单选多选下拉组件 - 卡拉云 web前端对表格某一字段进行万能查询包括(>,<,=)。字段的选值使用复合... 公司装修除甲醛除味 桑蚕丝领带怎么洗 真丝领带清洗注意事项 【真丝领带怎么洗】真丝领带怎么保养 真丝领带皱了怎么办 是什么影响了西湖龙井的耐泡度 有关格林童话好词好句的句子摘抄(梦境奇幻之旅) 中国驰名商标有哪些?? 中国品牌排行榜前十名 和老公吵架冷战一周怎么办 狗狗去世要怎么处理 小米12spro全面屏手势怎么设置 全面屏手势设置方法介绍 小米12spro全面屏手势怎么设置 全面屏手势设置教程介绍 拜见岳父大人3剧情介绍 电影<巴尼的人生>的女主角(纽约做电台直播)是谁饰演的? 有一部电影,男主和儿子都很懒,妻子是家庭主妇。整天在家忙个不挺,_百... Lisa Hoffman品牌介绍 哈维最后的机会剧情简介 达斯汀霍夫曼现状 达斯汀 霍夫曼老婆 华为mate10保时捷怎么装鸿蒙系统 淘宝买家差评威胁在哪里投诉?如何投诉? 看电视下载什么软件 王者荣耀名字空白代码怎么打_王者荣耀名字空白代码设置介绍 上海帅康油烟机清洗服务有限公司帅康油烟机清洗诀窍及注意事项_百度知 ... 上海饭店油烟机清洗 上海酒店油烟机清洗公司可靠吗? 请问冷却塔 冷吨数(RT) 117.9 冷却水量m3/h(28℃) 80 是什么意思?_百度... 改签后退票比直接退票要便宜吗? 换窗户如何防水 窗户换掉如何防水 装修换窗如何防水处理 换窗户如何做防水 wps设置一级标题二级标题 wps设置一级标题二级标题 桃花几瓣 桃花有哪些花型 南京租房一般多少钱 长沙房子租金多少钱一平方米 弱弱的问下.nano5和ipv哪个更值得入手 脊灰疫苗应该怎样选择?有3种:糖丸、灭活IPV、五联疫苗?求解释... ...纠结着。我想问下:IPV、五联、是一个意思吗? “你变的更漂亮了,希望你每天都可以开开心心”用英语翻译这句话 《花心》是谁填的词? ...一天下班回家敲门 而你不再像以前一样开开心心的出现在门内时,心... ...世界过得开开心心的,我会好好的。”英文怎么翻译?谢谢 希望我的兄弟能开开心心过一辈子这句话用英语怎么翻译 ...开开心心, 这就是我最大的愿望了 。 (翻译成英文) 我想开开心心的过每一天,无忧无虑,什么也不记得! 翻译成英文肿么说? 开开心心的过每一天 简简单单的生活 那也是最幸福的 英文怎么翻译 ...不到一个月,相机出现毛病,拍完去查看照片变成黑色图片了,录像... 砸中司机吴斌飞来异物是什么 我想问,有人在我水杯里撒尿,我想把这人找出来,拿他们的尿和我水杯里的... 把吴斌撞伤的是个什么东西 常吃用铁锅炒的菜有利于人们预防___病 [ ] A.夜盲症 B.缺铁性贫血症C... ...多吃水果和蔬菜可分别预防 A.地方性甲状腺肿、贫血、坏血病 B.佝... ...多吃水果和蔬菜可分别预防 [ ] A.地方性甲状腺肿,贫血, 问题:想提前进行房贷还款处理,请问上海工商银行一年后提前还贷情况如何... 二极管1n4007 电脑主机和插座的那个连接线的金属插头老有兹兹声,而且有点小冒火。 电脑的电源线的一个插头烧焦了一个还能开机用但是这样有危险吗?_百 ... ...2B青年到底是什么意思啊?他们是怎么样来的啊?出自哪里啊? 送购物卡定罪标准是什么? 滥竽充数的竽是什么意思? 滥竽充数的竽和数是什么意思 电动车是怎么变速的 柴油普通发票有什么用 柴油发票属于什么票 柴油开票是开成什么 奥伯龙之手作者简介 用地道的粤语翻译一下,把普通字改成粤语。差不多等于火星文。字的结构... 九阴真经千灯镇因祸得福里的恨天老人遗册怎么获得 磁共振波谱分析磁共振波谱主要检测 MRS振波谱 九阴真经千灯镇固定指引奇遇任务“因祸得福”怎么做, 遗册 找不到啊... 1500买个卡片机好还是二手微单好? 品胜的FW50可以用在NEX6上吗? 酒驾撞死人强制险赔偿吗? 福森源和王老吉哪个去火效果好?
  • 焦点

最新推荐

猜你喜欢

热门推荐