一、django项目的创建与启动

1. 使用命令来创建

django-admin startproject project_name   #创建django项目

cd project_name   #进入到项目文件夹里

python manage.py startapp user    #创建了一个user,子系统

python manage.py runserver 0.0.0.0:8000   #启动项目

2.使用pycharm来创建

 3. 目录结构

 dj_test:项目的容器

manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互

dj_test/__init__.py: 一个空文件,告诉 Python 该目录是一个 Python 包

dj_test/settings.py: 该 Django 项目的设置/配置

dj_test/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"

dj_test/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目

user:创建的子系统,我们可以将不同类型的功能分成多个不同的子系统来开发(创建后,在settings中的INSTALLED_APPS中需配置该名称)

urls:路由设置 

views:简单地说就是一个函数,接收并处理请求,调用模型和模版,响应请求

models:Django模型涉及数据库相关操作

二、django模板

1. templates中的html中的变量使用双括号  {{ hello }}  

 

 

2. 需要在settings中配置模板目录,django会自动来找html文件

3. views中增加一个函数,向模板提交数据

 

 4. 在urls中绑定url与视图函数

 

 5. *****上下文管理器*****

含义:上下文处理器是可以返回一些数据,在全局模板中都可以使用。比如登录后的用户信息,在很多页面中都需要使用,那么我们可以放在上下文处理器中,就没有必要在每个视图函数中都返回这个对象。例如导航栏在每个页面都展示。定义的上下文处理器文件中,定义一个函数,这个函数只有一个request参数。这个函数中处理完自己的逻辑后,把需要返回给模板的数据,通过字典的形式返回。如果不需要返回任何数据,那么也 必须返回一个空的字典。

  step1. 创建一个py文件,编写上下文处理器,也就是函数

    

 

 step2. 在settings.py中去将我们的上下文处理器添加进去

    

 

 step3. 前端使用

 

 

6. *****模板里的继承*****

 目的:减少代码的冗余  语法是:{% block content %}   {% endblock %}

   step1. 创建一个base.html,公共内容写在这个里面,要显示的内容写个盒子

    

 

 step2. 创建一个index.html,继承这个base.html,在盒子里添加内容

    

三、django模型

 含义:模型是一个定义数据源的数据,它包含要存储数据的一些属性和行为。通常,每一个模型对应数据库中的一个数据表。每一个模型是django.db.models.Model的子类,每一个模型属性代表数据表的一个字段,Django提供了自动生成的数据库访问API,使用模型操作数据库很方便。

  step1.创建一个模型

 

 

 step2. 运行命令使模型生效,并创建表

   python manage.py makemigrations

   python manage.py migrate 

   注:另外一个需要注意的是这两个命令默认情况下是作用于全局,也就是对所有最新更改的models或者migrations下面的迁移文件进行对应的操作,如果要想仅仅对部分app进行作用的话 则执行如下命令:

   python manage.py makemigrations appname,

   python manage.py migrate appname,

四、数据库的操作

#数据库的数据新增
models.Nav.objects.create(name='我的日记2')
#查询
#get方法查询的必须保证数据查出来只有一条
result1 = models.Nav.objects.get(name='我的心情')
print(result1.create_name)
#filter过滤
result = models.Nav.objects.filter(is_delete=1,name='我的心情') #查询
result = models.Nav.objects.filter(name__contains='我的',id__gt=1) #模糊查询,gt大于,gte大于等于,lt小于,lte小于等于
print(result)
#exclude是排除
result = models.Nav.objects.exclude(id=1)
print(result)
#或
result = models.Nav.objects.filter(Q(name__contains='6')|Q(name__contains='3'))#或
#all获取所有数据
all = models.Nav.objects.all()
print(all)
#修改
n = models.Nav.objects.get(id=1)
n.name = '我的相册2'
n.is_delete = 0
n.save()
models.Nav.objects.all().update(is_delete=0) #更新表里面所有数据
models.Nav.objects.filter(name__contains='相册').update(is_delete=1) #根据条件更新数据
#删除
models.Nav.objects.all().delete() #删除表里所有数据
models.Nav.objects.filter(id__lt=3).delete() #根据条件删除