工作生活

深入理解Django静态文件以及模板详解

2019-07-01  本文已影响0人  EchoPython

Django运行模式

image

Django MTV图片介绍

image

静态文件

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': 
[os.path.join(BASE_DIR, 'templates')]       # 系统能调用模版,'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',],},},]

模板

class Login(View):def get(self, request):return HttpResponse("<h1>hello world</h1>")

class Login(View):def get(self, request):return render(request, "login.html")

class Login(View):def get(self, request):t = get_template("login.html")return HttpResponse(t.render())ps: 进阶用法,这里只是介绍

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': 
[os.path.join(BASE_DIR, 'templates')],'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',],},},]

message = u"欢迎使用学员登录系统"return render(request, "login.html",{"message": message})ps: 如果不想引用,可以使用locals(),locals()指获取当前能获取到的变量,形成一个字典 例: return render(request, "login.html",locals())

例:<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Title</title></head><body>{{ message }}</body></html>

{% if now %}当前时间: {{ now|date:"Y-m-d H:i:s" }}{% endif %}

{% for m in modules %}{{ m }}{% end %}

{{message|lower|capfirst}}

{{message|cut:" "}}ps: 使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着。

获取当前时间import datetimedatetime.datetime.now(){{ now|date:"Y-m-d H:i:s" }}

base.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
{% block js %}{% endblock js %}
</head>
<body>
{% block content %}{% endblock content %}
</body>
</html>login.html{% extends "base.html" %}
{% block content %}这是一个登录页面{% endblock %}

{% include "menu.html" %}

深入理解模板以及自定义过滤器

比如,我们现在有一个account的app

account

├── admin.py

├── apps.py

├── init.py

├── init.pyc

├── migrations

│ └── init.py

├── models.py

├── templatetags

│ ├── custom_tags.py

│ └── init.py

需要使用自定义过滤器,必须把对应的app加载,在settings中添加该app,假设我需要使用account下的自定义标签

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'account'

]
from django import template

register = template.Library()   #代表此文件是自定义标签的包,register 不能作为更改,否则无法引用  过滤器

@register.filter

def mycut(value, args):

return value.replace(args, "").lower()

@register.simple_tag

def xx():       #  可以加参数

pass

ps: register = template.Library()register的命名是固定的,不能修改

{% extends "base.html" %}

{% load custom_tags %}  # load + 文件名

{% block content %}

{{ name|mycut:" " }}

{% endblock %}

ps: 创建完templatetags模块后,你需要重启服务器。

ps: 在模板中加载的是过滤器所在的文件名,而不是app的名称。

ps: pycharm创建文件夹时,不会自动上传


STATICFILES_DIRS = [

os.path.join(BASE_DIR, "static")

]

ps: 使用pycharm 创建完静态文件后,需要手动上传一次


{% load static %}
<script src="{% static '/js/jquery.min.js' %}"></script>
上一篇下一篇

猜你喜欢

热点阅读