指南:今天,首席CTO注释将与您分享为什么Django必须配置URL的相关内容。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!
1.什么是urls.py
2. urls.py文件位置
3. urls.py配置格式
urlpatterns =模式('view prefix',
URL(r'^正则表达式1/$','view函数1',name =“ url标识符1”),
URL(r'^正则表达式2/$','view函数2',name =“ url标识2”),,
治愈
4.如何在urls.py中工作
如果您只是使用静态,则配置将比媒体少一个步骤,并且将比较以下内容。当它到达静态时,您必须不得不谈论Django的开发环境和部署环境之间的区别。django配置文件设置.py调试变量是主要区别。debug = true表示,在开发环境(调试模式)下,在开发环境下(调试模式),调试模式,调试= false),相反,它用于正式部署环境中。两个,例如缓存,错误信息的方式等以及今天的静态文件的处理方法。开发环境中的静态文件由Django随附的Web服务器处理(这将是更多方面)。如果调试设置为false,则Web服务器带有Django自然不会处理静态文件。静态文件已移交给NGINX,可以处理Apache(这将更有效)。
让我们谈谈开发环境中静态配置的方式。
这次,我主要使用Django版本1.4版本对其进行配置。必须提前声明这一点,因为1.4之后,Django的项目结构发生了很大变化。如果将以下配置方法放在Django 1.3上,则绝对不合适,值得注意。StaitC配置仅在settings.py中进行。
调试= true
这种设置环境在开发环境中。
然后自己构建一个可变site_root。该变量不是必需的,但是为了重复使用,可以随机使用该名称。
导入操作系统
sit_root = os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')
变量值项的根目录是settings.py的存储位置。
然后将值分配给静态文件变量,告诉Django,静态文件在哪里
static_root = os.path.join(site_root,'static')
说到哪个,我应该谈论项目文件结构。例如,这很容易让人,这段时间的项目结构如下:
我的项目
- - 我的项目
----------__init__.py
--------设置
-------- urls.py
-------- wsgi.py
- - 博客
----------__init__.py
--------模型
--------视频
------- test.py
- - 静止的
-------- CSS
-------------- style.css
-------- JS
------------------- jQuery.js
- - - - 图片
--------------------我JPG
- - 媒体
--------上传
注意项目的结构,您会发现Site_root是
我的项目
- - 我的项目
路径。
static_root是
我的项目
- - 媒体
路径。
好的,然后配置说
static_url ='/static/'
模板中使用的静态文件URL的后缀。
最后一个关键部分是staticfiles_dirs配置以下
staticfiles_dirs =(
(“ css”,os.path.join(static_root,'css')),),),),),),
(“ JS”,OS.Path.join(static_root,'js'),
(“图像”,os.path.join(static_root,'images'),),
治愈
简而言之,静态文件夹在项目中使用了三个CSS JS Images文件夹(请参阅项目结构)。他们的道路是:
os.path.join(static_root,'css'),os.path.join(static_root,'js'),os.path.join(static_root,'images');
我们给了他们三个别名CSS,JS,图像(您可以随意给出它,但是为了简单的记忆,我们的原始名称指定别名)
在这一点上,Staitc已完成,并且无需在URLS.PY中配置相关内容。Django将自动找到分析静态文件的正确途径。与媒体相比,配置中的一步也要少。
配置后,您可以在模板中正常使用静态文件。如何使用?请使用模板说明。
呢Doctype HTML
html lang =“ zh-cn”
头
meta charset = utf-8
titlestaitc示例/标题
链接rel =“ stylesheet” type =“ text/css” href =” https://www.shouxicto.com/article/ {{static_url}} css/style.css/style.css“媒体”媒体=“屏幕” //
脚本类型=“ text/javascript” src =“ https://www.shouxicto.com/article/ {{static_url}} js/jquery.js”/script
/头
身体
img src =“ https://www.shouxicto.com/article/ {{static_url}} images/me.jpg”“ alt =” [#0#]
/身体
/html
注意{{static_url}}是在设置中使用static_url变量,然后分析:/static/。
{{static_url}} css/style.css最终解析了我们想要的内容:/static/css/style.css,django将根据配置文件找到相应的文件。
结束时,让我们谈谈如何建立正式的部署环境:
调试= false
首先将调试设置为false,将DJANGO环境视为正式的非示例模式,然后Django将不再单独处理静态页面。最后,将静态文件移交给nginx apache进行处理。
讨论NGINX如何正确分析静态文件。在服务器中添加本地静态文件处理
位置 /静态 / {
root/home/www-data/twogoo/myproject/;
}
还有一个容易犯错误的地方,这是路径。一些学生经常指定这样的路径:/home/www-data/twogoo/myproject/staitc/;因此,nginx不应该找到静态文件,因为nginx将运行// home/www-data/twogoo/myproject/staitc/staitc/找到它。请注意,在静态文件处理中,您会更加顺畅。
初学者通常无法区分两者之间的差异。在此简要介绍下,URL是Django 1.x的写作。p在django2.1中,它开始放弃django1.x.in django2.x中的URL写作,path and re_path.re_path()函数描述了URL配置的两个函数。可以将其视为Django 1.X中的URL函数,也就是说,您可以在路径中定期使用。
路径和URL是两个不同的模块。效果是响应返回页面。路径调用python第三 - 方模块或框架,URL是自定义模块,例如视图下的DEF函数对应于您的URL中的参数值,然后,然后
例如:
settings.py文件中有一个root_urlconf设置,该文件设置为匹配哪个URL文件在访问URL时用于匹配网站。
url或re_path应该复杂(r'^blog/(?p [0-9] {4})/')首先需要启动和结束结束符号)结束字符,匹配a()的参数是匹配的参数范围,
(?p匹配字段名称正则表达式)
参数和域名是否不包含get或post请求方法,例如不匹配?
您可以为请求参数设置默认值
自定义错误页面关键字handler400 = blog.views.page_no_find
如何使用参数路径(“ blog/str:string/”)要简单得多,也就是说,洒水,正面是str的类型代表参数,以及后面参数的参数名称
捕获URL中的参数需要使用括号中的值类型,以指定括号中的值类型,例如int:astr:link,有很多类型,例如:
如果不足以定义路径和转换器语法的URL模式,则需要使用正则表达式。目前,您需要使用re_path()而不是路径()。
示例:传递数字数的参数
在python3中使用django2时,设置URL时,您会遇到一些坑。在此处记录。
在系统的urls.py中,使用1.x的URL方法。
在2.0中,它建议使用路径模块,因此在此处重写。引用
注意:
1. thex中的写作是
当前写作
在此比较中可以理解这一点,使用的链接是:钥匙= ABC
1.x写作方法
但是在2.0中,您以这种方式编写,您将报告一个错误,什么App_name,您可以自己看到,如何解决它,实际上非常简单。只要您在自己的项目urls.py中添加此句子。如果您不添加ITAN错误,
笔记:
在互联网的历史中,统一资源定位(URL)的发明是一个非常基本的步骤。统一资源定位符号的语法是一般且可扩展的。它使用ASCII代码的一部分来表示Internet的地址。统一资源定位符号的开头标记了计算机网络使用的网络协议。
在Django中,您通常需要配置图片,视频和其他格式文件。在配置过程中,它更为复杂。这是一个记录:
将以下目录添加到文件末尾以存储上传的文件
在模型中,图像字段是%y代表年份的年份,%m表示一个月。上传文件时,表示将上传到图像目录和当前限制目录的文件夹。
image = models.imagefield(upload_to =“ image/%y/%m”,空白= true)
其中,SRC中的{{Media_url}}将在模板中渲染,以用作 /媒体 /
如果要在模板中使用{{Media_url}},请在“ template”的“ context_processis”选项中添加django.template.contexors.media。
通过上述步骤,结果基本上可以正常呈现在前端,但是您需要在图片中添加一个URL才能正常显示。
第一个行为介绍了静态文件的服务器,第二个行为是在配置文件中的介质_root中介绍的
加入URL:
不需要
来自django.conf.urls导入模式,包括URL
#未点击接下来的两行以启用管理员:
#来自django.contrib导入管理员
#admin.autodiscover()
urlpatterns =模式('',,
# 例子:
#url(r'^$','nowamagic.views.home',name ='home'),
#url(r'^nowamagic/',include('nowamagic.foo.urls'),),),),
#不注册管理员/文档/文档belw启用管理文档:
#url(r'^admin/doc/',include('django.contrib.admindocs.urls'),),),),),),),),),),),),),),)
#取消注释下一行以启用管理员:
#url(r'^admin/',infulude(admin.site.urls)),
治愈
只要您配置这样的规则,我也曾谈论过它:
[python]查看普通复制打印?
(r'^hello/$',你好),
您可以在Views.py中定义Hello函数。
该图案包含一个尖锐的昵称(^)和一个美元符号($)。这些是正则表达式符号,具有特定的含义:上箭头需要表达式以符合字符串的头部,并且美元符号需要表达式要匹配字符串的尾巴。^Hello/ $匹配Hello/ String,也就是说,在帮助Hello/ hello/ hello/)函数之后,如果没有'$',请输入hello1/;Hello2/ Will对应于Hello()该函数已显示。
Hello功能我们可以随便写:
[python]查看普通复制打印?
来自django.http导入httpresponse,http404
def hello(请求):#each视图函数至少具有一个参数,通常称为请求。
返回httpresponse(“ Hello Nowamagic!”)#a视图功能必须返回httpresponse
然后,我需要显示主页,也就是说,域名直接映射到某个视图功能,那么我该如何编写?
[python]查看普通复制打印?
(r'^$',索引),
索引函数是生成主页的视图函数。
顺便说一句,在视图函数中,返回httpresponseredirect('https://www.shouxicto.com/'):返回到主页,即127.0.0.1。
结论:以上是为每个人编写的主要CTO注释,说明Django为什么必须配置URL的所有内容。感谢您花时间阅读本网站的内容。我希望这对您有帮助。有关为什么Django必须配置与Urldon相关的URL的更多信息,请不要忘记在此站点上找到它。