-
创建项目
workon django django-admin startproject 项目名
-
pycharm打开项目
-
设置解释器
-
创建子应用(python manage.py startapp 子应用名)
-
修改配置文件(第二个项目名下面的settings.py)
注册子应用
# 注册APP 也就是让Django项目识别 自己的子应用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 注册user子应用
'user.apps.UserConfig'
]
修改数据库配置
DATAbaseS = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(base_DIR, 'db.sqlite3'),
# }
'default': {
# 链接数据库所需的引擎
'ENGINE': 'django.db.backends.mysql',
# 数据库所在电脑的ip地址,如果链接的是本机的数据库,地址也就是 127.0.0.1 或者 localhost
'HOST':'localhost',
# 数据库所在服务的端口号
'PORT':3306,
# 登录mysql用户名
'USER':'root',
# mysql的密码
'PASSWORD':'zf1234',
# 自己手动mysql中创建库
'NAME': 'day02',
}
}
本地化配置
# 修改中文 LANGUAGE_CODE = 'zh-hans' # 修改为 亚洲/上海时间 TIME_ZONE = 'Asia/Shanghai'
6、在 子应用的 models.py创建模型类(每个模型类对应数据库中的一张表)
创建模型类
from django.db import models
# Create your models here.
# 导演: 姓名、年龄、性别
class DY(models.Model):
name = models.CharField(max_length=20)
age = models.IntegerField(null=True)
# 用布尔类型代表 男和女 True:男, False 女
gender = models.BooleanField(default=True)
class meta:
db_table = 'tb_dy'
# 电影: 电影名、价格、销量、上映日期
class Movie(models.Model):
name = models.CharField(max_length=20)
price = models.DecimalField(max_digits=7, decimal_places=2)
salses = models.IntegerField(default=0)
time = models.DateField()
class meta:
db_table = 'tb_movie'
迁移生成表
-
python manage.py makemigrations
-
python manage.py migrate
7、在子应用的 views.py中定义视图
from django.http.response import HttpResponse
from .models import *
import json
# 展示电影列表
def movie_list(request):
# 1. 模型类.objects.all()
movies = Movie.objects.all()
# 2. 将查询集解析为 列表包含字典的数据格式
data = [
{
'id': movie.id,
'name': movie.name,
'price': str(movie.price),
'salses': movie.salses
}
for movie in movies
]
# 在实际开发中,django只负责 返回数据,并且是 json 数据
# 3. 将 列表数据 转换为 json字符串
s = json.dumps(data)
# 4. 将json字符串作为响应返回
return HttpResponse(s)
# 展示导演列表
def dy_list(request):
# 1. 从数据库中查询全部导演数据
dy_list = DY.objects.all()
# 2. 解析数据
data = [
{
'id': dy.id,
'name': dy.name,
'gender': '男' if dy.gender else '女'
}
for dy in dy_list
]
# 3. 返回数据,数据自动转换为json,
# data数据是非字典,转换时,需要设置 safe=False
# data是字典数据,就不需要设置
return JsonResponse(data, safe=False)
8、对视图配置路由
from django.contrib import admin
from django.urls import path
from movies.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('movie/', movie_list) # 对展示电影的视图配置路由
path('dy/', dy_list) # 对展示导演的视图配置路由
]
小结:
-
项目的初始化只需要执行一次
-
每个功能对应一个视图函数
-
每个视图函数对应一个路由



