入门
Django的安装可以看
Django安装
创建
进入pycharm,更改环境变量
进行配置
目录结构
settings.py详解
- 调试模式下,我们更改代码会自动重启,不需要自己手动再去重启了
启动
python .\manage.py runserver
# 指定端口,默认是8000
python .\manage.py runserver 8001
# 让其他局域网用户能够访问,只能是0.0.0.0,不能改
python .\manage.py runserver 0.0.0.0:8001
要启动JavaScript调试会话,请按住Ctrl+Shift并单击URL链接。
数据迁移
- 迁移的慨念:就是将模型映射到数据库的过程
生成迁移文件:python manage.py makemigrations
执行迁移:python manage.py migrate
- 不需要初始化迁移文件夹,每个应用默认有迁移文件夹migrations
- 打开右上角的Database管理器,将db.sqlite3拖到这里面,不能拖的话,就自己配置路径
- 第一次要下载驱动程序
创建应用
- 一开始创建项目的时候可以顺便创建一个应用,如果要创建多个应用,就需要用命令
python manage.py startapp App(应用的名字,这里是App)
创建名称为App的应用
使用应用前需要将应用配置到项目中,在settings.py中将应用加入INSTALLED_APPS选项中
应用目录介绍:
init_.py:
其中暂无内容,使得app成为一个包
admin.py:
管理站点模型的声明文件,默认为空
apps.py:
应用信息定义文件,在其中生成了AppConfig,该类用于定义应用名等数据
models.py:
添加模型层数据类文件
views.py:
定义URL相应函数
migrations包:
自动生成,生成迁移文件的
tests.py:
测试代码文件
基本视图
- 拿user应用举例
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
# 视图函数Views
# 第一种方式,返回相应的response
def test01(request):
return HttpResponse('hello Django')
# 第二种方式,渲染模版render,渲染html
# 使用第二种方式,需要在user应用里面创建一个templates(名字不能变)文件夹,然后在文件夹里面创建要使用的html文件
def test02(request):
return render(request,'index.html')
- 然后我们需要,在urls.py文件添加我们的路由规则
from django.contrib import admin
from django.urls import path
import user.views
from user.views import * # 我们要添加user应用下的函数,需要先导包
urlpatterns = [
# 自己定义的路由规则,导入相对应的函数,只写函数名,不能加括号
path('index01/',user.views.test01),
path('index02/',user.views.test02),
path('admin/', admin.site.urls),
]
方式一
方式二
框架流程图
路由的基本使用
- 我们来看刚才写的路由
from django.contrib import admin
from django.urls import path
import user.views
from user.views import * # 我们要添加user应用下的函数,需要先导包
urlpatterns = [
# 自己定义的路由规则,导入相对应的函数,只写函数名,不能加括号
path('index01/',user.views.test01),
path('index02/',user.views.test02),
path('admin/', admin.site.urls),
]
- 当有多个应用的时候,假如每个都写一个应用,这时,我们就会发现:我们多个人都需要更改同一个文件。为了避免这样的情况,我们需要使用子路由
- 而且当路由过多的时候也不好打理,子路由可以使其更加清楚
创建子路由 - 需要在应用user下面创建一个文件urls.py(名字不一定是urls,可以改)
from django.urls import path
from user.views import * # 导入包
# 子路由
# urlpatterns名字固定,不能更改,因为视图函数和子路由在同一个包下面,所以不需要写成user.views.test01
urlpatterns=[
path('index01/',test01,name='index01'),#name='index01',给路由取一个名字
path('index02/',test02,name='index02'),
]
- 然后在urls.py文件下面添加子路由
from django.contrib import admin
from django.urls import path,include # 添加子路由需要使用include函数
import user.views
from user.views import * # 我们要添加user应用下的函数,需要先导包
urlpatterns = [
# 自己定义的路由规则,导入相对应的函数,只写函数名,不能加括号
# path('index01/',user.views.test01),
# path('index02/',user.views.test02),
# 添加子路由,一般一个应用对应一个子视图
# 对于path的一个参数,这里写的是'user/',就表示多了一层路由,就变成了/user/index01/
# 当然也可以不写,那就还是/index01/,推荐写上并且和包名字一样
# 注意'user/'斜杆别没了,'user'就需要访问/userindex01/了
path('user/',include('user.urls')),
path('admin/', admin.site.urls),
]
定义模型和简单使用
- 首先进入应用的models.py,这里以user应用举例
- 添加模版
from django.db import models
# 和数据库的对应关系
# 模型Model <==> 表结构
# 类属性 <==> 字段
# 对象实例 <==> 表的一行数据
# 每个模版都必须继承models.Model,因为功能实现都来源他
class UserModel(models.Model):
name=models.CharField(max_length=30) # 对应 name varchar(30)
age=models.IntegerField(default=20) # 对应 age int default=18
sex=models.CharField(max_length=10) # 对应 sex varchar(20)
is_deleted=models.BooleanField(default=False)
# 表字段
# 用户名称-name
# 年龄-oge
# 性别-sex
# 是否删除-is_delete
- 下一步进行数据迁移
- 注意,model表结构一旦改变,就需要重新进行数据迁移
先生成迁移文件:python manage.py makemigrations
再执行迁移:python manage.py migrate
-
在应用默认的迁移文件夹migrations,生成迁移了文件001_initial.py
-
刷新数据库,获得user_usermodel表(名字可以改)
-
这里默认会生成字段id作为主键
-
双击打开,图形化界面,添加数据
-
进入视图,创建新的视图,这里还创建了模版user.html
from django.shortcuts import render
from user.models import * # 导入所有模型
# 进行从数据库取数据
def test03(request):
# 模型操作:获取UserModel对应表的所有数据
users=UserModel.objects.all()
return render(request,'users.html',{'users':users})
# 传参,要使用字典形式,键名为模版当中使用的名字
- 使用Django模版语法,这里for+tab键,
<ul>
无序列表
如果没有效果,可能是pycharm没有设计模版语言,去设计一下
- 最后添加路由规则,我们原来已经使用了子路由,所以只需要在应用里面添加就行了
后台管理
- 创建超级管理员的账号和密码:python manage.py createsuperuser
from django.contrib import admin
from user.models import * # 导入所有模型
# Register your models here.
#后台管理系统的使用:
# 1.在这里注册对应的模型
# 2.需要创建超级管理员的账号和密码:python manage.py createsuperuser
# 3.根路urls.py中添加:path('admin/', admin.site.urls),默认就有
# 4.访问后台管理系统:http://127.0.0.1:8000/admin/
admin.site.register(UserModel)
- 进入
在模型里添加一个__str__函数
class UserModel(models.Model):
name=models.CharField(max_length=30) # 对应 name varchar(30)
age=models.IntegerField(default=20) # 对应 age int default=18
sex=models.CharField(max_length=10) # 对应 sex varchar(20)
is_deleted=models.BooleanField(default=False)
def __str__(self):
return f'{self.name}-{self.age}'
- 进行添加数据,其他的也差不多,点进去进行更改或删除