文章目录
- 一.安装
 - 二.创建项目
 - 三.项目介绍
 - 四.APP的创建
 - 五.小案例
 - 六 模板和静态文件
 - 模板
 - 静态文件
 
- 7.模板语法
 - 7.1 变量
 - 7.2列表
 - 7.3 字典
 - 7.4 过滤器
 - 7.5 if/else
 - 7.6 for标签
 - 7.7 ifequal和ifnotequal
 - 7.8注释
 - 7.9csrf_token
 
- 8.模板继承
 - 8.1父模板
 - 8.2 子模板
 
- 9.请求和响应
 - 10.数据库
 - 10.1安装第三方模块
 - 10.2 创建数据库
 - 10.3 Django连接数据库
 - 10.4 类创建表
 - 10.5 增删改查
 
一.安装
pip install djiango
安装完后的库结构。
-Scripts
~~~~ -Django-admin.exe
-Lib
~~~~ -内置模块
~~~~ -site-packages
~~~~~~~~ -django
(注意:Django-admin为管理工具)
二.创建项目

删除一行默认的代码:
 

三.项目介绍
project_django
~~~~ - __init__.py
~~~~ -asgi.py ~~~~~~~~ 接收网络请求(不需要修改)
~~~~ -settings.py ~~~~~~~~ 项目配置
~~~~ -urls.py ~~~~~~~~ url和函数的对应关系
~~~~ -wsgi.py ~~~~~~~~ 接收网络请求(不需要修改)
manage.py ~~~~~~~~ 项目的管理,启动,创建APP,数据管理
四.APP的创建
python manage.py startapp app_1

 APP结构:
├─app_1
│  │  admin.py            [固定,不用动]django默认提供了admin后台管理
│  │  apps.py             [固定,不用动]app启动类
│  │  models.py           对数据库进行操作
│  │  tests.py            单元测试
│  │  views.py            函数
│  │  __init__.py
│  │
│  └─migrations           数据库变更记录 
│          __init__.py
│
 
五.小案例
1.注册APP【settings】
 找到这个类
 
 将这个类的地址写到INSTALLED_APPS

 2.编写url和视图函数的对应关系【urls】
 之后,如访问www.xxx.com/index,则转去执行views.index中的函数
 
3.编写视图函数【view.py】
 
 4.启动django
 方法一:命令行
python manage.py runserver
方法二:Pycharm启动
 
 5.浏览器访问
 
六 模板和静态文件
模板
在app_1的下面写一个文件名为templates的模块,里面存放html文件
 
 使用render返回html文件

 
静态文件
静态文件包括 css ,js, 图片等。

这样就可以引入样式
 

 注意特殊语法:
<% load static%>
<link rel="stylesheet" href="{%static'plugins/css'%}"/>
 
7.模板语法

 视图函数render内部
- 读取含有模板语法的html
 - 内部进行渲染,模板语法执行并且替换数据
 - 返回渲染后的结果
 
7.1 变量
view.py:
def test_templates(request):
    my_name = "jack"
    return render(request, "test_templates.html", {"name": my_name})
    
 
 
html:
<p>name:{{ name }}</p>
 

7.2列表
view.py
def test_templates(request):
    my_list = ["jack", "rose"]
    return render(request, "test_templates.html", {"name_list": my_list})
 
html
<body>
    <div>
        <p>name:{{ name_list }}</p>
    </div>
    <div>
        <p>name2:{{ name_list.0 }}</p>
        <p>name3:{{ name_list.1 }}</p>
    </div>
</body>
 

7.3 字典
view.py
def test_templates(request):
    my_dict = {
        "name": "jack",
        "age": "20",
        "height": "178"
        }
    return render(request, "test_templates.html", {"dict": my_dict})
 
html
<body>
    <div>
        <p>all:{{ dict }}</p>
        <p>name:{{ dict.name }}</p>
        <p>age:{{ dict.age }}</p>
        <p>height:{{ dict.height }}</p>
    </div>
</body>
 

7.4 过滤器
模板语法
{{ 变量名 | 过滤器:可选参数 }}
view.py
def test_templates2(request):
    name = "JACK AND ROSE"
    return render(request, "test_templates2.html", {"my_name": name})
 
html
<body>
    <div>
        <p>{{ my_name }}</p>
        <p>{{ my_name | lower}}</p>
    </div>
</body>
 
过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:
{{ my_list|first|upper }}
- addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。
 - date:按指定的格式字符串参数格式化 date 或者 datetime 对象
 - lenght:返回变量的长度。字典返回的是键值对的数量,集合返回的是去重后的长度。
 - safe:将字符串标记为安全,不需要转义。
 - default:default 为变量提供一个默认值。
 如果 views 传的变量的布尔值是 false,则使用指定的默认值。
以下值为 false:
0 0.0 False 0j "" [] () set() {} None7.5 if/else
{% if condition %} ... display {% endif %}{% if condition1 %} ... display 1 {% elif condition2 %} ... display 2 {% else %} ... display 3 {% endif %}7.6 for标签
遍历列表
{% for i in views_list %} {{ i }} {% endfor %}遍历字典
{% for i,j in views_dict.items %} {{ i }}---{{ j }} {% endfor %}在 {% for %} 标签里可以通过 {{forloop}} 变量获取循环序号。
forloop.counter: 顺序获取循环序号,从 1 开始计算
forloop.counter0: 顺序获取循环序号,从 0 开始计算
forloop.revcounter: 倒序获取循环序号,结尾序号为 1
forloop.revcounter0: 倒序获取循环序号,结尾序号为 0
forloop.first(一般配合if标签使用): 第一条数据返回 True,其他数据返回 False
forloop.last(一般配合if标签使用): 最后一条数据返回 True,其他数据返回 False7.7 ifequal和ifnotequal
{% ifequal user currentuser %} <h1>Welcome!</h1> {% endifequal %}7.8注释
{# #}
7.9csrf_token
csrf_token 用于form表单中,作用是跨站请求伪造保护。
8.模板继承
8.1父模板
{% block 名称 %} 预留给子模板的区域,可以设置设置默认内容 {% endblock 名称 %}8.2 子模板
{% extends "父模板路径"%}{ % block 名称 % } 内容 {% endblock 名称 %}9.请求和响应
10.数据库
10.1安装第三方模块
pip install mysqlclient
10.2 创建数据库
1.ORM的功能:
- 创建,修改,删除数据库中的表【无法创建数据库】
 - 对数据库中的表进行操作
 
2.启动mysql
3.创建数据库create database django_database DEFAULT CHARSET utf8 COLLATE utf8_general_ci;10.3 Django连接数据库

10.4 类创建表

相当于在数据库中创建表app01_userinfo,即等同于下面代码:""" create table app01_userinfo( id bigint auto_increment primary key, name varchar(32), password varchar(64), age int ) """执行运行命令:
python manage.py makemigrationspython manage.py migrate

修改表结构 -----> 直接修改表model.py文件
如果添加新的字段,没有添加默认值会出现下面情况:

选择1的话,会出现让你输入一个默认值给新的整一列。
选择2的话,会退出,让你直接修改model.py文件。设置默认值
age = models.IntegerField(default=2)
允许为空
age = models.IntegerField(null=True, blank=True)
10.5 增删改查
- 增
 
UserInfo.objects.create(name="小明", password="123", age="19", email="xiaoming.gmail.com")- 删
 
UserInfo.objects.filter(id=4).delete()UserInfo.objects.all().delete()- 改
 
UserInfo.objects.filter(id=5).update(email="999999")- 查
 
data_list = UserInfo.objects.all() for item in data_list: print(item.name, item.password, item.age, item.email)作者:Beyong
出处:Beyong博客
github地址:https://github.com/beyong2019
本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。



















