问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么django一定要配置url(2023年最新分享)

发布网友 发布时间:2024-09-30 19:41

我来回答

1个回答

热心网友 时间:2024-10-24 22:38

导读:今天首席CTO笔记来给各位分享关于为什么django一定要配置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为什么要配置static

如果简单使用static,配置起来会比media要少一步,下面会比较一下。说到static,不能不说说Django开发环境和部署环境的区别,Django配置文件settings.py里的DEBUG变量就是主要的区别,DEBUG=True,说明是在开发环境(调试模式)下,DEBUG=False反之是在正式部署环境下使用。两者有很大的区别,比如缓存,出错信息的方式等等,还有今天说的静态文件的处理方式上。开发环境下静态文件都是通过Django自带的web服务器来处理的(这样会更方面)。如果把DEBUG设置成False,那么Django自带的web服务器自然不处理静态文件了,静态文件都交给nginx,apache来处理吧(这样会更高效)。

具体说说static在开发环境下怎么配置吧。

这次主要拿Django1.4版本来做配置,这个要事先声明,因为1.4以后,Django的项目结构发生很大的变化,如果下面的配置做法放到Django1.3上肯定不适应了,值得注意哦。staitc的配置只要在settings.py里做即可。

DEBUG=True

这个设定环境是处在开发环境下。

然后自己建立一个变量SITE_ROOT,变量不是必须的,只是为了方面重用,名字可以随意起。

importos

SITE_ROOT=os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')

变量值项目的根目录,也就是settings.py的存放位置。

然后给静态文件变量赋值,告诉Django,静态文件在哪里

STATIC_ROOT=os.path.join(SITE_ROOT,'static')

说到这里,我还是说说项目文件结构吧,这个容易蒙人,比如这次的讲的项目结构如下:

myproject

----myproject

--------__init__.py

--------settings.py

--------urls.py

--------wsgi.py

----blog

--------__init__.py

--------models.py

--------views.py

--------test.py

----static

--------css

------------style.css

--------js

------------jquery.js

--------images

------------me.jpg

----media

--------upload

注意项目的结构,你会发现SITE_ROOT就是

myproject

----myproject

的路径。

STATIC_ROOT就是

myproject

----media

的路径。

好,接着配置说

STATIC_URL='/static/'

给静态文件url一个后缀,在templates里用到的。

最后关键的部分是STATICFILES_DIRS以下配置

STATICFILES_DIRS=(

("css",os.path.join(STATIC_ROOT,'css')),

("js",os.path.join(STATIC_ROOT,'js')),

("images",os.path.join(STATIC_ROOT,'images')),

)

简要说一下,static文件夹在项目里,有cssjsimages三个文件夹(看项目结构),他们的路径分别是:

os.path.join(STATIC_ROOT,'css'),os.path.join(STATIC_ROOT,'js'),os.path.join(STATIC_ROOT,'images');

我们分别给他们起三个别名css,js,images(你可以随意给,不过为了易记,我们原名称指定别名了)

到这里staitc算是配置完成了,并不需要再urls.py里配置相关的东西,Django就会自动找到对的路径解析静态文件了,也是在配置上static比media少了一步。

配置好了,在templates就能正常使用静态文件了。怎么用?拿一个templates讲解吧。

!DOCTYPEhtml

htmllang="zh-CN"

head

metacharset=utf-8

titlestaitc例子/title

linkrel="stylesheet"type="text/css"href="{{STATIC_URL}}css/style.css"media="screen"/

scripttype="text/javascript"src="{{STATIC_URL}}js/jquery.js"/script

/head

body

imgsrc="{{STATIC_URL}}images/me.jpg""alt="img"

/body

/html

注意{{STATIC_URL}}就是取配置文件settings.py里的STATIC_URL变量,解析出来的就是:/static/。

而{{STATIC_URL}}css/style.css最终解析出来的就是我们想要的:/static/css/style.css,Django会根据配置文件找到相应的文件。

快到尾声的时候,讲讲正式部署环境怎么设置吧:

DEBUG=False

首先把DEBUG设置为False,告诉Django环境是正式的非调试模式下了,然后Django就不再通过自己来处理静态页面了,最后静态文件都交给NginxApache来处理了。

说说Nginx怎么配置,才能正确解析静态文件吧,在一个server里添加一个location静态文件处理

location/static/{

root/home/www-data/twogoo/myproject/;

}

这个也有一个容易犯错的地方,就是路径,有的同学常常指定这样的路径:/home/www-data/twogoo/myproject/staitc/;这样Nginx应该找不到静态文件的,因为Nginx会跑到/home/www-data/twogoo/myproject/staitc/staitc/路径里找,注意这点,静态文件处理上你会顺很多。

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中加上这句就行了.如果不加的话可能报错,

注:

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

在因特网的历史上,统一资源定位符(URL)的发明是一个非常基础的步骤。统一资源定位符的语法是一般的,可扩展的,它使用ASCII代码的一部分来表示互联网的地址。一般统一资源定位符的开始标志着一个计算机网络所使用的网络协议。

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做分页功能要配置urls.py吗

不用

fromdjango.conf.urlsimportpatterns,include,url

#Uncommentthenexttwolinestoenabletheadmin:

#fromdjango.contribimportadmin

#admin.autodiscover()

urlpatterns=patterns('',

#Examples:

#url(r'^$','nowamagic.views.home',name='home'),

#url(r'^nowamagic/',include('nowamagic.foo.urls')),

#Uncommenttheadmin/doclinebelowtoenableadmindocumentation:

#url(r'^admin/doc/',include('django.contrib.admindocs.urls')),

#Uncommentthenextlinetoenabletheadmin:

#url(r'^admin/',include(admin.site.urls)),

)

前面也谈过,只要配置这么一条规则:

[python]viewplaincopyprint?

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

就可以定义/hello/路径显示views.py中的hello函数。

模式包含了一个尖号(^)和一个美元符号($)。这些都是正则表达式符号,并且有特定的含义:上箭头要求表达式对字符串的头部进行匹配,美元符号则要求表达式对字符串的尾部进行匹配。^hello/$匹配hello/字符串,即在网址hello/找到hello/后,使用hello()函数显示出来,如果没有'$'结尾,则网址中输入hello1/;hello2/都会对应以hello()函数显示出来。

hello函数我们随便写写:

[python]viewplaincopyprint?

fromdjango.httpimportHttpResponse,Http404

defhello(request):#每个视图函数至少要有一个参数,通常被叫作request。

returnHttpResponse("HelloNowaMagic!")#一个视图功能必须返回一个HttpResponse

那么我需要显示首页,就是域名直接映射到某个view函数下,那么又怎么写呢?

[python]viewplaincopyprint?

(r'^$',index),

index函数就是生成首页的view函数。

顺便说下,在view函数里,returnHttpResponseRedirect('../'):返回主页,即127.0.0.1。

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 django音乐url怎么(2023年最新整理) 4个月宝宝爱啃袖子怎么纠正? django升级了url怎么配置文件(2023年最新整理) 语文课前3分钟演讲稿,明天就要 急!!!最好与最近发生的事有关!!! 随 ... 股票什么时候除权呢 什么时候会除权 股票除权日是什么时候 股票每年什么时候除权 什么时候需要除权 股票一般什么时候除权 养老保险个人一年交12000退休拿多少? 孕晚期怎么缓解便秘? 开塞露治眼袋吗? 红霉素软膏和开塞露能一起治眼袋吗 护肤品一直用一个牌子好吗 成套用还是搭配用好 巨细!小姐姐告诉你关于 BeautifulSoup 的一切(上) ...的实验装置图,请根据相关知识回答以下问题. (1)A装置中铁丝燃烧的现... ...水生成气体体积与时间关系图,试回答下列问题.(1 图为电解水的装置,根据观察到的实验现象回答:(1)C管中生成的气体是... ...装置示意图.请你回答下列问题:(1)根据实验现象,可以确定B端产生的... django3怎么配置路由(2023年最新解答) 小孩子喜欢玩袖子是怎么回事 django前端怎么通过url传递参数(2023年最新分享) 在Django中怎么设置静态文件(2023年最新整理) 赛扬J1900是什么处理器 j1900处理器性能如何? e3845和j1900性能对比 赛扬j1900性能怎样 在cad中怎么用直径符号? cad中直径用什么符号表示? 有熊氏迁徙分布 买了一个铁三角的c502,求教下简单的煲耳机方式 i74790k和e31231 v3哪个好 手机上的excel表格传到电脑上怎么打开? 煎制牛排,如何达到嫩滑口感,同时兼顾香气? 美图m8保存的图片视频都没有了在图库找不到了怎么回事啊 ...的IOS6的美图秀秀照的照片哪里去了?相册里面没有啊。。 为什么想美化照片的时候,图库里的照片却显示不出来 我是T字油性皮肤,进一年总有粉刺出现 装了影子系统就不用再装杀毒软件了!影子系统比装有杀毒软件的运行更快...