python3 manage.py runserver [127.0.0.1:8000]
默认 IP 地址和端口号为 127.0.0.1:8000
如果想要让其他电脑连接到服务器,需要手动将 IP 地址指定为 0.0.0.0
0.0.0.0
以我的理解为一个开关,打开后可以接收来自任何 IP 地址的请求
127.0.0.1
为本机地址,他在 Windows 系统内有一个别名,即 localhost
,用来描述自身,如果想要让别人连接你,就需要打开 cmd 输入 ipconfig
获取 IP 地址了,如 192.168.0.104
urls.py
中 url
和 re_path
的使用等价,其中 url
是 2.0 之前的用法,2.0 之后被 path
代替
通过 from django.conf.urls import url
导入 url
通过 from django.urls import path, re_path
导入 path
和 re_path
re_path
可以匹配正则表达式
templates
用于存放 .html
文件,与 manage.py
文件处在同一目录,需要在 settings.py
文件中指明路径
import os
TEMPLATES = [
'DIRS' = [BASE_DIR + '/templates'],
# 或者
# 'DIRS' = [os.path.join(BASE_DIR, 'templates')],
# 'DIRS' = [填绝对路径也行]
]
模板用法
view: {'数据库字段', '数据库字段对应的属性值'}
HTML: {{ 数据库字段 }}
过滤器
{{ 变量名 | 过滤器:可选参数 }}
# 如下
{{ name|safe }}
if/else 标签
{% if condition %}
... display
{% endif %}
支持嵌套,如 if...elif...else
支持 in,and,or,not,>,<,==
for 标签
{% for i in listvar %}
{{ forloop.counter0 }}
{% empty %}
空空如也~
{% endfor %}
循环为空,即不发生循环将执行 empty
注释标签
{# 这是注释 #}
csrf_token
跨站请求伪造保护,{% csrf_token %}
放在 <form>
标签下一行
首先,向浏览器发送请求,获取登录页面,此时中间件 csrf 会自动生成一个隐藏input标签,该标签里的 value 属性的值是一个随机的字符串,用户获取到登录页面的同时也获取到了这个隐藏的input标签。
然后,等用户需要用到form表单提交数据的时候,会携带这个 input 标签一起提交给中间件 csrf,原因是 form 表单提交数据时,会包括所有的 input 标签,中间件 csrf 接收到数据时,会判断,这个随机字符串是不是第一次它发给用户的那个,如果是,则数据提交成功,如果不是,则返回403权限错误。
自定义标签和过滤器
- 在应用目录下创建 templatetags 目录(与 templates 目录同级,目录名只能是 templatetags)。
- 在此目录下创建任意文件,导入
template
类
from django import template
register = template.Library() #register的名字是固定的,不可改变
在 settings.py
的 TEMPLATES
节点的 OPTIONS
节点添加 libraries
配置
TEMPLATE = [
'libraries': 'templatetags.my_tags'
]
利用装饰器 @register.filter
自定义过滤器。注意:装饰器的参数最多只能有 2 个。
利用装饰器 @register.simple_tag
自定义标签。
在使用自定义标签和过滤器前,要在 html 文件 body 的最上方中导入该 py 文件。
{% load my_tags %}
语义化标签在该 py 文件中导入 mark_safe。
from django.utils.safestring import mark_safe
定义标签时,用上 mark_safe 方法,令标签语义化,相当于 jQuery 中的 html() 方法。和前端HTML文件中的过滤器 safe 效果一样。
@register.simple_tag
def my_html(v1, v2):
temp_html = "<input type='text' id='%s' class='%s' />" %(v1, v2)
return mark_safe(temp_html)
在HTML中使用该自定义标签,在页面中动态创建标签。
{% my_html "zzz" "xxx" %}
配置静态文件
- 在项目根目录下创建 statics 目录。
- 在 settings 文件的最下方配置添加以下配置:
STATIC_URL = '/static/' # 别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "statics"),
]
- 在 statics 目录下创建 css 目录,js 目录,images 目录,plugins 目录, 分别放 css文件,js文件,图片,插件。
注意:此时引用路径中的要用配置文件中的别名 static
,而不是目录 statics。
在模板中使用需要加入 {% load static %} 代码,{% static "images/runoob-logo.png" %}
模板继承
标签 block...endblock: 父模板中的预留区域,该区域留给子模板填充差异性的内容,不同预留区域名字不能相同。
{% block 名称 %}
预留给子模板的区域,可以设置设置默认内容
{% endblock 名称 %}
子模板使用标签 extends 继承父模板:
{% extends "父模板路径"%}
子模板如果没有设置父模板预留区域的内容,则使用在父模板设置的默认内容,当然也可以都不设置,就为空。
子模板设置父模板预留区域的内容:
{ % block 名称 % }
内容
{% endblock 名称 %}