django
django请求处理流程图
flowchart LR
projecturl[urls.py]
appurl[urls.py]
appview[views.py]
subgraph project
projecturl
end
projecturl-->appurl
subgraph app
appurl-->appview
appview-->models
appview-->templates
templates-->models
end
静态文件服务
开发模式下
在settings中将debug设置为true即可
DEBUG = True
生产模式下
在settings.py中设置 STATICFILES_DIRS 定义了django会在除app中的static目录外查找静态文件的目录,这个目录位置不能跟STATIC_ROOT重复、 比如
STATICFILES_DIRS = [
BASE_DIR / "static",
]
STATIC_URL = 'static/'
{% static 'img/bg.png' %}
如有需要的话可添加STATIC_ROOT
STATIC_ROOT = "collectedstatic/"
用户上传文件服务
开发模式下
在根目录urls.py(也就是项目同名app中的urls.py)
参考官网: https://docs.djangoproject.com/zh-hans/4.1/howto/static-files/#serving-uploaded-files-in-development
urlpatterns +=static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
生产模式下
在settings.py中设置
参考官网: https://docs.djangoproject.com/zh-hans/4.1/ref/settings/#std-setting-MEDIA_ROOT
MEDIA_ROOT = 'media/'
MEDIA_URL = 'media/'
内置模版标签和过滤器
参考: https://docs.djangoproject.com/zh-hans/4.1/ref/templates/builtins/#ref-templates-builtins-filters
date 过滤器
如果模型中的数据类型是datetime而只想输出年月日,则可以使用date过滤,比如
我在模型中定义的字段类型
class Post(models.Model):
created_time = models.DateTimeField(auto_now=False, auto_now_add=True)
{{post.created_time|date:"Y-m-d"}}
增加markdown支持
安装markdown
pip install markdown
假设models.py中定义的字段如下
class Post(models.Model):
title = models.CharField("标题",max_length=50,blank=True,null=True)
content_md = models.TextField("内容(markdown格式)",blank=True,null=True)
def post_detail(request,title):
post = Post.objects.get(title=title)
md = markdown.Markdown(extensions=[
'markdown.extensions.extra',
'markdown.extensions.codehilite',
'markdown.extensions.toc',
])
content = md.convert(post.content_md)
return render(request,'post_detail.html',context=({'post':post,'content':content,'toc':md.toc}))
模版文件post_detail.html中可以使用如下方式
{{post.title}}
{{content|safe}}
{{toc|safe}}
添加表格边框
可以看到html源码中markdown为生成的内容添加了如下标签
<article class="blog-post">
.blog-post table,tr th,tr td {
border: 1px solid;
}