对Django Web开发中路由(ulr)配置 '^static/(?P<path>.*)' 的理解

   在Django静态文件管理中,开发过程中需要启用静态文件服务,在settings.py文件的INSTALLED_APPS中,启用静态文件管理模块‘django.contrib.staticfiles’,DEBUG设置为True时,在Pycharm下运行runserver将自动启用静态文件服务。(读者可自行调试,注释掉django.contrib.staticfiles,可查看报错详情),此模式不适合线上环境使用,具体详情查看Django文档http://www.2xkt.com/documents/django_182/howto/static-files/index.html

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'login.apps.LoginConfig',
]

    除此之外,如果STATIC_URL 定义为/static/,可以通过在urls.py 中加入以下代码片段启用:

from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^ckeditor/', include('ckeditor_uploader.urls')),
    url(r'^home/', include('login.urls')),
]
urlpatterns+=static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

在调试模式下启动项目,可以看到相关的路由信息如下图所示:

重点关注圈红的部分:(?P<path>.*)

       在Python正则表达式中,命名正则表达式组的语法是(?P <name> pattern),其中name是组的名称,pattern是一些要匹配的模式。

下面举例加以说明:

方法1:指明组名称

(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'news.views.month_archive'),  ---> d{n} 匹配数字n次

如果通过路由/articles/2005/03/ 向Django后台发送请求,则会调用视图函数news.views.month_archive(request, year='2005', month='03')

将实参传输到相关视图函数后进行下一步逻辑处理。

方法2:未指明组名称

(r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
如果通过路由 /articles/2005/03/  向Django后台发送请求,则会调用视图函数news.views.month_archive(request, '2005', '03')

将实参传输到相关视图函数后进行下一步逻辑处理。

                                                                                                      

                                                                                              django学习者小白一枚,第一次写博客,不好之处还请见谅!

猜你喜欢

转载自blog.csdn.net/sun_dangyang/article/details/80591968