一 Django介绍
Django是开源免费的Python高级web框架,内置电池,用于快速开发可靠、安全、可扩展的web应用。
获取帮助:https://docs.djangoproject.com
(一)常用命令
命令行生成模板 django-admin.py startproject my_project
启动服务器 python manage.py runserver
(二)网站开发基础知识
URL:是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上每一个文件都有一个唯一的URL。基本URL包括模式(或称协议)、服务器名称(或IP地址)、路径和文件名。
常见的网络协议:http超文本传输协议资源、https用安全套接字层传送的超文本传输协议、ftp文件传输协议。
常见的HTTP请求方式:GET\POST
GET请求和POST请求的区别:
GET:可以用浏览器直接访问、请求可以携带参数,但是有长度限制、请求参数直接放在URL后面。
POST:不能使用浏览器直接访问、对请求参数的长度没有限制、可以用来上传文件等需求。
不同的HTTP响应状态码有什么含义:
2XX请求成功
3XX重定向
4XX请求错误
5XX服务器错误
(三)视图
一个视图函数,检查视图。接受一个请求,返回一个响应。响应可以是HTML内容、文本、图形,甚至是404、重定向等。
1、视图快捷方法
定义视图:
def view_name()#定义视图
2、内置的视图及重写
3、请求响应对象
4、使用class重写视图
具体知识请详细学习。
二 Django模板语法
(一)templates介绍和选择
模板具有一定的格式或骨架,可以动态的生成HTML。模板引擎决定以何种方式组织代码。一个项目可以有一个或者多个模板引擎。DTL、jinja2。
jinja2安装:
pip install jinja2
渲染机制:
1、从磁盘读取模板文件(get_template)
2、选择合适的模板引擎(select_template)
3、将定制内容对模板进行渲染(render)
4、发送给浏览器显示
(二)templates相关配置
配置示例:
BACKEND(模板引擎配置)
django.temlate.backends.django.DjangoTemplates
django.template.backends.jinja2.jinja2
DIRS:推荐配置绝对路径(模板引擎按列表顺序搜索这些目录以查找模板源文件。
APP_DIR:决定模板引擎是否应该进入每个已安装的应用中查找模板。每种模板引擎后端都定义了一个惯用的名称作为应用内部存放模板的子目录名称。
DTL——templates目录
jinja——jinja2目录
OPTIONS:其他选项配置
同时支持两种模板引擎:
TEMPLATES = [
{
'BACKEND':django.template.backends.django.DjangoTemplates',
'DIRS':[os.path.join(BASE_DIR,'tempaltes')],
},
{
'BACKEND':'django.tempalte.backends.jinja2.Jinja2',
'DIRS':[os.path.join(BASE_DIR,'jinja2')],
}
]
模板文件查找规则,例如get_template(‘detail.html’)。,那么它查找首先在templates/detail.html、其次在jinja2/detail.html。查找时会优先于顺序。
(三)模板变量的使用
1、渲染python中的变量
语法:
{{ variable }}
当模板引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身
变量中不能有空格和点号
2、渲染python中的对象
语法:
{{ object.attribute }}
(四)模板标签的使用
使用变量时,如果加上循环和if等条件判断以及页面较多时,能共用部分页面将更方便使用。
语法
{% tag %}
循环控制
{% for item in data_list %}
<li>内容</li>
{% endfor %}
条件控制
{% if condition_a %}
#满足A条件
{% elif conftion_b %]
#满足了B条件
{% else %}
#都不满足
{% endif %}
添加注释
{# 注释内容 #}
html的注释:
<!--注释内容-->
for循环对象
{% for key,value in data.items %}
{{key }}:{{value }}
{% endfor %}
重复循环
{% cycle ’row1' 'row2' %}
url标签的使用
{%url ‘url_name’ params %}
当前时间显示
{% now “jS F Y H:i” %}
(五)模板过滤器
对模板进行特殊处理后再渲染
过滤器语法:
{{ value|filter_name:params}}
内置过滤器
1、使用过滤器将首字母大写
{{ value|upper}}
2、日期对象格式化
{{value|date:"D d M Y"}}
3、默认值显示
{{ value|default:" "}}
{{ value|default_if_none:"无"}}
4、富文本内容转义显示
{{value|safe}}
5、字符串截取
{{value|truncatechars:9}}
{{value|truncatechars_html:9}}
{{value|truncatewords:2}}
自定义过滤器
1、在app目录下新建包templatetags
2、实现过滤器poll_filter.py
3、在模板中使用过滤器
(六)模板的抽象和继承
1、将可变的部分圈出来(base.html)
{%block sidebar %}
<!--菜单栏的内容-->
{% endblock %}
2、继承父模板
{%extends "base.html" %}
3、填充新的内容(index.html)
{extends"base.html" %}
{%block sidebar %}
<!--新的菜单栏的内容-->
{%endblock %}
4、复用父模板的内容(可选)
{extends"base.html" %}
{%block sidebar %}
{{supper}}
<!--新的菜单栏的内容-->
{%endblock %}
在模板中添加公共部分
1、将可变的部分拆出来(footer.html)
<footer>
这是页脚公共的部分
</footer>
2、将拆出来的部分包进去(index.html)
{% extends "base.html" %}
{% block content %}
<!--页面主要内容区域-->
{#公用的footer#}
{%include "footer.html" %}
{%endblock %}
本人也是初学,有疑问可加QQ1297716447,说明来意,互相交流学习。