参考 Django搭建个人博客
创建Django项目
输入创建命令
django-admin startproject myblog
设置中文及时区
修改根目录settings.py文件:
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
...
USE_TZ = False
配置jinja2
修改根目录settings.py文件:
模板放在jinja2中
TEMPLATES = [
#jinja2
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': ['project/templates',],
'APP_DIRS': True,
'OPTIONS': {
'environment': 'dzpms.jinja2.environment',
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
#默认模板
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['',],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
project主目录下新建文件jinja.py:
from django.templatetags.static import static
from django.urls import reverse
from jinja2 import Environment
def environment(**options):
env = Environment(**options)
env.globals.update({
'static': static,
'url': reverse,
})
return env
创建并配置APP功能模块
创建App
django-admin startapp article
查看myblog目录
注册APP(settings)
打开myblog的settings.py,找到INSTALLED_APPS添加app:
settings.py/
INSTALLED_APPS = [
# 其他代码
...
# 新增'article'代码,激活app
'article',
]
配置访问路径(urls)
1 配置 project/url.py
在根 URLconf 文件中指定我们创建的 arcticle.urls 模块。
打开myblog目录下的urls.py文件的 urlpatterns 列表里插入一个 include(), 如下:
urls.py/
from django.contrib import admin
# 记得引入include
from django.urls import path, include
# 存放映射关系的列表
urlpatterns = [
path('admin/', admin.site.urls),
# 新增代码,配置app的url
path('article/', include('article.urls', namespace='article')),
]
现在我们已经通过path将根路径为article/的访问都分发给article这个app去处理。但是app通常有多个页面地址,因此还需要app自己也有一个路由分发.
path为Django的路由语法。参数article/分配了app的访问路径;include将路径分发给下一步处理;namespace可以保证反查到唯一的url,即使不同的app使用了相同的url(后面会用到)。记得在顶部引入include。
函数include()允许引用其它 URLconfs。每当 Django 遇到include()时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。
2 配置apps/urls.py
创建URLconf,映射URL到视图。
在app生成时并没有urls.py这个文件,因此需要自己在article/文件夹中创建urls.py,在里面输入:
article/urls.py
# 引入path
from django.urls import path
# 正在部署的应用的名称
app_name = 'article'
urlpatterns = [
# 目前还没有urls
]
urlpatterns中暂时是空的,没写入任何路径的映射,不着急以后会写。
在项目中,可能会有五个,十个,二十个,甚至更多应用。
在根 URLconf中添加命名空间,在apps/urls.py文件中稍作修改,加上 app_name 设置命名空间,使Django 能够分辨重名的 URL、 知道{% url %}标签到底对应哪一个应用的 URL。
编辑模板html文件,从:"{% url 'name' %}"修改为指向具有明明空间的详细视图:"{% url 'app:name' %}"
此时我们的app就配置完成了。