在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')
将实参传输到相关视图函数后进行下一步逻辑处理。