django升级了url怎么配置文件(2023年最新整理)

导读:本篇文章首席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如何工作

python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件

在Django项目开发中,不能像正常web开发一样通过 \'imgs/bg.jpg\' 访问本地静态文件,需要做一些配置,才能实现静态文件的访问。

一、首先在项目根路径下新建一个static文件夹,然后在static文件夹下可以新建相应的css、imgs、js等文件夹,用于存放css、img、js等静态文件。

二、项目配置

1、打开settings.py,在底部添加:

2、打开urls.py,在 urlpatterns 中添加:(注意,如果你在blog目录下也建立了urls.py,那么就得在blog/urls.py中做修改。别忘了import settings):

(不过我经过实测,不加这一个,也可以完成静态文件的访问)

3、在html模板最上面添加:

然后在需要的地方按照这个格式进行调用,如:

最后重新运行项目,img等本地静态文件就可以被django找到了,这时模板对应的页面就可以显示使用img等文件了。

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

流线型化(streamlinling)函数导入

1:直接导入视图函数

from django.conf.urls.defaults import *

from mysite.views import hello

urlpatterns = patterns(\'\',

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

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

)

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

from django.conf.urls.defaults import *

from mysite import views

urlpatterns = patterns(\'\',

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

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

)

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

from django.conf.urls.defaults import *

urlpatterns = patterns(\'\',

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

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

)

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

from django.conf.urls.defaults import *

urlpatterns = patterns(\'mysite.views\',

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

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

)

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

旧:

from django.conf.urls.defaults import *

urlpatterns = patterns(\'mysite.view\',

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

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

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

)

新:

from django.conf.urls.defaults import *

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的例子:

from django.conf.urls.defaults import *

from mysite import views

urlpatterns = patterns(\'\',

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

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

)

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

from django.conf.urls.defaults import *

from mysite import views

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

from django.conf.urls.defaults import *

from mysite import views

urlpatterns = patterns(\'\',

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

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

)

# views.py

from django.shortcuts import render_to_response

from mysite.models import MyModel

def foobar_view(request, url):

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

if 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

from django.conf.urls.defaults import *

from mysite import views

urlpatterns = patterns(\'\',

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

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

)

# views.py

from django.shortcuts import render_to_response

from mysite.models import MyModel

def foobar_view(request, 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(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导入:

from django.conf.urls.defaults import *

urlpatterns = patterns(\'\',

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

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

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

)

10:实例:

验证用户是否登录:

以下是三个视图

def my_view1(request):

if not request.user.is_authenticated():

return HttpResponseRedirect(\'/accounts/login/\')

# ...

return render_to_response(\'template1.html\')

def my_view2(request):

if not request.user.is_authenticated():

return HttpResponseRedirect(\'/accounts/login/\')

# ...

return render_to_response(\'template2.html\')

def my_view3(request):

if not request.user.is_authenticated():

return HttpResponseRedirect(\'/accounts/login/\')

# ...

return render_to_response(\'template3.html\')

以下是对视图进行包装:

def requires_login(view):

def new_view(request, *args, **kwargs):

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

return HttpResponseRedirect(\'/accounts/login/\')

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

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

以下为URL配置:

from django.conf.urls.defaults import *

from mysite.views import requires_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怎么配置文件(2023年最新整理)  第1张

结语:以上就是首席CTO笔记为大家介绍的关于django升级了url怎么配置文件的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 13:22
下一篇 2023-09-23

相关推荐

发表回复

登录后才能评论