1.创建django项目
1.首先Windows加r打开小黑框 输入cmd 然后输入命令:django-admin startproject 项目名
2.讲创建好的django项目拉到python打开 然后创建子应用
命令:python manage.py startapp 子应用名
3. 运行项目
命令:python manage.py runserver
4.配置项目
在与文件同名的setting.py里配置
INSTALLED_APPS = [ # 2.子应用 常见错误:不带逗号
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 注册子应用
]
TEMPLATES = [ # 4. 模板配置 返回页面
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 配置模板页面的路径,记得新建templates文件夹
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
DATABASES = { # 5. 数据库
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'HOST': 'localhost', # 主机
'PORT': 3306, # 端口
'USER': 'root', # 用户名
'PASSWORD': 'root', # 密码,每个人的不一样
'NAME': 'p4_db1', # 使用的数据块, 创建一个干净的数据块
}
}
LANGUAGE_CODE = 'zh-Hans' # 6.语言
TIME_ZONE = 'Asia/Shanghai' # 6.时区
5.安装数据库
在与项目同名的init文件中,添加以下代码
import pymysql
pymysql.install_as_MySQLdb()
6.编写模型类(生成表,操作数据)
在子应用的models.py文件中编写代码
class Games(models.Model):
# name字段 CharField字符串 max_length最大长度 verbose_name后台的名字
name = models.CharField(max_length=20, verbose_name="游戏名")
kind = models.CharField(max_length=20, verbose_name="类型")
# IntegerField整形
age = models.IntegerField(default=16, verbose_name="年龄向")
# 表配置
class Meta:
db_table = "games" # 表名
verbose_name = "游戏表" # 后台的表名
verbose_name_plural = verbose_name # 复数
# 魔法方法
def __str__(self):
return self.name
7.迁移(通过模型类,生成数据库中的表)
生成迁移文件命令: python manage.py makemigrations
执行迁移命令: python manage.py migrate
8.使用管理员页面添加测试数据:
运行项目
创建超级用户:python manage.py createsuperuser
在子应用的admin.py文件中注册表:(注册以后才能进行管理)
from django.contrib import admin
from myapp.models import Games
# Register your models here.
admin.site.register(Games)
登录管理员用户,添加测试数据
9.编写视图代码
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Games
# 逻辑代码 视图
# Create your views here.
# 函数视图
def myView(request):
# 逻辑代码
# 获取数据库Games表中的所有数据
games_data = Games.objects.all()
# 1.基础响应
# return HttpResponse("Hello world")
# 2.返回模板页面
# render参数 request请求 模板页面 context传递给页面的数据(字典)
return render(request, 'index.html', {"games": games_data})
10.编写模板页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>模板页面</h3>
<p>
游戏数据:
{{ games }}
</p>
<p>
循环渲染数据: <br>
{% for i in games %}
{{ i.id }} {{ i.name }} {{ i.kind }} {{ i.age }} <br>
{% endfor %}
</p>
<table border="1" width="500">
<tr>
<th>编号</th>
<th>游戏</th>
<th>种类</th>
<th>年龄</th>
</tr>
{% for game in games %}
<tr>
<td>{{ game.id }}</td>
<td>{{ game.name }}</td>
<td>{{ game.kind }}</td>
<td>{{ game.age }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
报错总结:
状态码:
如果是3开头的话就是成功或者重定向。
如果是4开头的话是客户端出现问题了。
如果是5开头的话是服务器出现问题
心得:
在今天之前我一直以为配置模板路径里的’templates’是写在"BASE_DIR"小括号里面或者外面意思都一样,但是我发现老师都是写在里面的 我出于好奇问了一下 然后我才知道 原来意思不一样 但是效果出来了 老师还是跟我说 虽然效果出来了 但是还是写在里面比较好 毕竟写在里面跟外面俩意思不一样的。 如果不是问了这一下 我可能会一直写在小括号外面 所以如果有什么不理解或者不懂的 一定要问老师 不然你就会一直错下去 可能你自己都不知道。