- 2.1 模板页面
- 2.1.1 模板页面返回
- 模板配置
- 创建模板
- 视图渲染
- 2.1.2 模版变量渲染
- 2.1.3 模版语句循环、分支
- for标签
- if 标签
- 2.2 静态资源
- 2.2.1 静态资源概念
- 2.2.2 静态资源路径配置
- 2.2.3 静态资源模板使用
- 2.3 ORM映射
- 2.3.1 映射概念
- 2.3.2 模型类编写
- 2.3.3 生成迁移文件和执行迁移
- 2.4 admin控制台
- 2.4.1 admin控制台概念
- 2.4.2 创建超级用户
- 2.5 **ORM视图 *** 作**
- 2.5.1 通过ORM *** 作模型类
- 2.5.3 模版页面数据渲染ORM *** 作结果
- 路由
需要打开settings.py文件,找到TEMPLATES选项,修改其中的DIRS属性,在这里添加我们的html文件夹位置
print('==========')
print(BASE_DIR) # 根路径
TEMPLATES = [ # 模板配置
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'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',
],
},
},
]
创建模板
在项目根目录下创建与配置同名的文件夹template文件,并命名为index.html
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hititle>
head>
<body>
<h3>这是一个模板页面h3>
body>
html>
视图渲染
有了html,目录也配置好了,那么紧接着就是让视图去返回这个文件views文件,那么现在我们要引入一个新的方法叫做render,这个方法专门用来返回一个html页面
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
# 视图函数
# 定义 request
def MyView(request):
# return HttpResponse('这是我第一个视图') # 返回一个响应
content = {
'money': 300,
'scores': [125, 36, 38, 39, 165],
'game': {
'name': '彤彤',
'age': '18',
'sex': '女',
'ai': '女朋友',
}
}
# return render(request, 'index.html', {'money': 100}) # 返回一个模板页面
return render(request, 'index.html', content) # 2.返回一个模板页面
2.1.2 模版变量渲染
现在我们可以使用模版变量来解决这个问题,页面处数据变化的位置,我们不再写死,而是通过一种特殊的语法,叫做模版变量的形式来展示天气这部分数据,这个语法类似这样
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<h3>这是一个模板页面h3>
<p>我兜里有多少钱{{ money }}p>
body>
html>
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Game
# Create your views here.
# 视图函数
# 定义 request
def MyView(request):
content = {
'money': 300,
'scores': [125, 36, 38, 39, 165],
'game': {
'name': '彤彤',
'age': '18',
'sex': '女',
'ai': '女朋友',
}
}
return render(request, 'index.html', {'money': 100}) # 返回一个模板页面
return render(request, 'index.html', content) # 2.返回一个模板页面
2.1.3 模版语句循环、分支
for标签
模板中的标签{% for %}
与Python中的for循环类似,要记得有闭合模板标签{{ endfor }}
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<p>
彤彤身上的数字为
{% for score in scores %}
{{ score }}
{% endfor %}
p>
body>
html>
if 标签
在模版中,可以通过{% if %}
标签语法来进行模板变量的值判断;
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<p>
{% if money > 200 %}
你真是个有钱人
{% else %}
你真穷
{% endif %}
p>
body>
html>
2.2 静态资源
2.2.1 静态资源概念
引入一些css*、img、js等静态资源
2.2.2 静态资源路径配置在settings中配置静态文件目录路径,
# 静态路径
STATIC_URL = '/static/' # 静态
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
2.2.3 静态资源模板使用
在html使用
DOCTYPE html>
<html lang="en">
{% load staticfiles %}
<head>
<meta charset="UTF-8">
<title>hititle>
head>
<body>
<p>彤彤的美照p>
{% load staticfiles %}
<img src="{% static '彤彤.jpg' %}">
<p>
body>
html>
2.3 ORM映射
2.3.1 映射概念
ORM映射关系,是django与数据库之间的一个桥梁,直接通过一套ORM所提供的API接口即可方便对各种数据库进行交互
2.3.2 模型类编写配置数据库
# 数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 使用mysql数据库
'HOST': 'localhost', # 主机
'PORT': 3306, # 端口
'USER': 'root', # 用户名
'PASSWORD': '123', # 密码,根据自己的密码来
'NAME': 'game', # 数据库
}
}
安装数据库
在创建的项目中找到***init.py***文件,并安装
# 安装数据库
import pymysql
pymysql.install_as_MySQLdb()
然后进入到myapp下的models.py文件中,编写一个类,这个类就对应数据库中的一张表
通过ORM映射在models.py文件中创建模型类
from django.db import models
# Create your models here.
# 模型类 会自动生成 id字段
class Game(models.Model):
# CharField 字符串 max_length 最大程度 verbose_name 后台管理的字段名
name = models.CharField(max_length=20, verbose_name='角色名')
# IntegerField 整型
atk = models.IntegerField(verbose_name='攻击力')
level = models.IntegerField(verbose_name='等级')
当某个子应用myAPP
涉及到了数据库的使用时,要记得在settings
文件中进行配置
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp', # 注册子应用
]
2.3.3 生成迁移文件和执行迁移
python manage.py makemigrations # 创建数据库迁移文件
python manage.py migrate # 根据数据库迁移文件生成对应 SQL 语句并执行
2.4 admin控制台
2.4.1 admin控制台概念
admin控制台是 django 为我们提供的一个便捷的来管理数据库的界面
2.4.2 创建超级用户python manage.py createsuperuser
还需要通过对应app下的admin.py文件进行admin后台注册,只有注册在这个文件中的模型类对应的表才可以在admin界面所看到
from django.contrib import admin
from myapp.models import Game
# Register your models here.
admin.site.register(Game)
2.5 ORM视图 *** 作
2.5.1 通过ORM *** 作模型类
from myapp.models import Game
# 3.MVT三层联动
# 通过Game模型类,取出数据块中的数据(ORM *** 作),取出所有角色信息
game_data = Game.objects.all()
content = { # 传递给页面的数据,字典
'games': game_data,
}
# render 返回一个模板类型
return render(request,'index2.html',content)
2.5.3 模版页面数据渲染ORM *** 作结果
修改一下对应的要渲染的 HTML 页面,使其渲染遍历出每一条数据、
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>展示数据库中的角色信息</h3>
{% for game in games %}
{{ game.id }} {{ game.name }} {{ game.atk }} {{ game.level }}<br>
{% endfor %}
<table border="1px" width="500px">
<tr>
<td>编号</td>
<td>角色名</td>
<td>攻击力</td>
<td>等级</td>
</tr>
{% for game in games %}
<tr>
<td>{{ game.id }}</td>
<td>{{ game.name }}</td>
<td>{{ game.atk }}</td>
<td>{{ game.level }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
路由
在urls.py
from django.contrib import admin
from django.urls import path
from myapp import views
# 主路由
urlpatterns = [
path('admin/', admin.site.urls),
path('myview/',views.MyView),
]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)