当前位置: 首页 > 网络应用技术

如何在Django中配置URL(2023年的最新答案)

时间:2023-03-05 19:37:33 网络应用技术

  指南:今天,首席CTO Note将与您分享如何在Django中配置文件。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  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项目的开发中,就像普通的Web开发一样,不可能通过“ IMGS/BG.JPG”访问本地静态文件。有必要进行一些配置以实现静态文件访问。

  首先,在项目根路径下创建一个新的静态文件夹,然后在静态文件夹下创建相应的CSS,IMGS,JS和其他文件夹,以存储静态文件,例如CSS,IMG,JS。

  第二,项目配置

  1.打开settings.py并将其添加到底部:

  2.打开urls.py并将其添加到urlpatterns :(注意,如果您还将urls.py设置在博客目录中,则必须在blog/urls.py中进行修改。不要忘记导入设置):

  (但是在测量之后,我可以完成静态文件的访问,而无需添加此文件)

  3.在HTML模板的顶部添加:

  然后以这种格式调用您需要的格式,例如:

  最终重新运行该项目,Django可以找到本地静态文件,例如IMG。目前,可以使用IMG和其他文件显示与模板相对应的页面。

  流链接功能导入

  1:直接导入视图功能

  来自django.conf.urls.defaults导入 *

  从mysite.views导入hello

  urlpatterns =模式('',,

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

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

  治愈

  2:在介绍软件包模块的名称和函数的功能中,而不是函数本身

  来自django.conf.urls.defaults导入 *

  从缅甸进口视图

  urlpatterns =模式('',,

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

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

  治愈

  3:无需导入任何视图内容,写出字符串的清晰描述

  来自django.conf.urls.defaults导入 *

  urlpatterns =模式('',,

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

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

  治愈

  4:提取公共视图前缀

  来自django.conf.urls.defaults导入 *

  urlpatterns =模式('mysite.views',

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

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

  治愈

  5:partterns()返回对象的添加到对象

  老的:

  来自django.conf.urls.defaults导入 *

  urlpatterns =模式('mysite.view',,

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

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

  (r'^other/$','mysite.othother.oth'),

  治愈

  新的:

  来自django.conf.urls.defaults导入 *

  urlpatterns =模式('mysite.view',,

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

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

  治愈

  urlpatterns +=模式('mysite.OthoShts',,

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

  治愈

  6:到目前为止,在所有URLCONF示例中,我们都非常简单,即

  如果您要捕获的URL零件并添加小括号,Django将将捕获的文本传递到视图函数。

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

  在Python正则表达式中,正则表达组的语法(?pnamepatrn)是该组的名称,而模式是一种匹配模式。

  以下是使用未知组的URLCONF的示例:

  来自django.conf.urls.defaults导入 *

  从缅甸进口视图

  urlpatterns =模式('',,

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

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

  治愈

  以下是相同的URLCONF,它重写了命名组:

  来自django.conf.urls.defaults导入 *

  从缅甸进口视图

  urlpatterns =模式('',,

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

  ;

  治愈

  如果您不带命名组,请求/Arcticle/2006/03 //将等于此功能呼叫:

  month_archive(请求,'2006','03')

  对于命名组,相同的请求就是这样的函数调用:

  month_archive(请求,年='2006',月= '03')

  可以看出,使用命名组可以使您的urlconf更清晰,减少参数顺序可能与潜在的错误混合在一起,

  您还可以对定义中的参数进行排序。

  7:查看冗余:

  #urls.py

  来自django.conf.urls.defaults导入 *

  从缅甸进口视图

  urlpatterns =模式('',,

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

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

  治愈

  #views.py

  来自django.shortcuts导入render_to_response

  从mysite.models导入mymodel

  def foobar_view(请求,URL):

  m_list = mymodel.objects.filter(is_new = true)

  如果url =='foo':

  template_name ='Template1.html'

  elif url =='bar':

  template_name ='Template2.html'

  return render_to_response(template_name,{'m_list':m_list})

  使用上述方法可以减少视图冗余

  8:固定参数传递到URL:

  #urls.py

  来自django.conf.urls.defaults导入 *

  从缅甸进口视图

  urlpatterns =模式('',,

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

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

  治愈

  #views.py

  来自django.shortcuts导入render_to_response

  从mysite.models导入mymodel

  def foobar_view(请求,template_name):

  m_list = mymodel.objects.filter(is_new = true)

  return render_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(请求,'jan','01')

  2:(r'^mydata/(?pmonth/w {3})/(?pday/d/d)',view.mydata)mydata(请求,月='jan',day',day ='01')

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

  9:包括导入:

  来自django.conf.urls.defaults导入 *

  urlpatterns =模式('',,

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

  (r'^photos/',包括('mysite.photos.urls'),

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

  治愈

  10:示例:

  验证用户是否已登录:

  以下是三个观点

  def my_view1(请求):

  如果未request.user.is_authenticated():

  返回httpresponseredirect('/accounts/login/')

  #...

  返回render_to_response('template1.html')

  def my_view2(请求):

  如果未request.user.is_authenticated():

  返回httpresponseredirect('/accounts/login/')

  #...

  返回render_to_response('template2.html')

  def my_view3(请求):

  如果未request.user.is_authenticated():

  返回httpresponseredirect('/accounts/login/')

  #...

  返回render_to_response('template3.html')

  以下是视图上的包装:

  deficuires_login(查看):

  def new_view(请求, *args,** kwargs):

  如果未request.user.is_authenticatienatienationed():#如果用户未登录,请跳到登录接口

  返回httpresponseredirect('/accounts/login/')

  返回视图(请求, *args,** kwargs)#otherwise

  返回new_view #turn to new_view值:登录视图或查看视图

  以下是URL配置:

  来自django.conf.urls.defaults导入 *

  来自mySite.views import oneques_login,my_view1,my_view2,my_view3

  urlpatterns =模式('',,

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

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

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

  治愈

  结论:以上是首席CTO指出Django中URL如何引入Django的全部内容。我希望这对每个人都会有所帮助。如果您想进一步了解这一点,请记住要收集对该网站的关注。