在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 Web开发中关于静态文件路由的配置,重点解析了'^static/(?P<path>.*)'的含义。在DEBUG=True时,Django会自动处理静态文件。通过在urls.py中添加特定代码,可以启用静态文件服务。文中讨论了正则表达式中的命名正则表达式组,并通过两个方法说明如何将路径参数传递给视图函数进行处理。

被折叠的 条评论
为什么被折叠?



