初识Django下(重点)

模板页面
模板配置

settings.py => TEMPLATES =>进行修改DIRS属性,添加HTML文件夹位置

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,创建html文件

视图渲染

让视图返回这个文件,用render
render可以用来返回一个模板页面,并将一个字典组合成的模板变量传递到模板页面*上,完成页面的渲染

render(request, template_name, context=None)
'''
request: 固定接收 request 请求,与视图 han s 第一个参数相同
template_name: 为一个可以找到的模板页面,填写配置 template 的相对路径即可
context: 模板页面所需模板变量,是一个字典格式,key 为模版变量,value 为渲染的值
'''
def MyView(request):
    # 传递给页面的数据,格式是字典
    content = {
        'money':100,
        'score':[100,99,95,85],
        'games':{'name':'鲁班','atk':'999','def':'10','level':'18'},
    }
    return render(request,'index.html',content) # 返回一个模板页面  传值
模板变量渲染
# 普通接收
{{var}},
# 循环
{% for var in 变量名%}
	{{var}}
{% endfor %},
# 变量是字典
{% for key,value in 字典名.items %}
     {{ key }} : {{ value }}<br/>
 {% endfor %}# 判断
{% if test_list %}
    列表不为空
{% elif test_dict %}
    列表为空,字典不为空
{% else %}
    列表字典均为空
{% endif %}

修改html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>这是一个模板页面</h3>
{#    <p>我有{{ money }}元</p>#}

    <p>
        {# 循环数组#}
        某小组各个成员的成绩:
        {% for i in score %}
            {{ i }},
        {% endfor %}
    </p>


    <p>
        {# 遍历字典  需要遍历键值对#}
        游戏角色信息:<br/>
        {% for key,value in games.items %}
            {{ key }} : {{ value }}<br/>
        {% endfor %}
    </p>

    <p>
        {#   if判断 else   #}
        {% if money > 200 %}
            真是个有钱的人
         {% else %}
            真是个节俭的人
        {% endif %}
    </p>
</body>
</html>
静态资源
概念

引用一些类似css、img、js、等静态资源,来装饰我们的页面

静态资源路由

settings.py配置静态资源路由

STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]  # 配置静态资源

在项目创建创建static目录,里面存入一些图片

静态资源模板使用

在模板页面中引用并使用
使用静态资源要加一句话

{% load staticfiles %}
<p></p>
    {# 使用静态资源要加下面的命令#}
    {% load staticfiles %}
    <img src="{% static '过程.PNG' %}">
ORM映射

ORM映射关系,是django与数据库之间的一个桥梁,可以使开发者不再关注如何去编写SQL语句,直接通过一套ORM所提供的API接口即可方便对各种数据库进行交互**

模型类编写

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='等级')

settings.py进行配置,注册子应用

INSTALLED_APPS = [ # 注册
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'myapp', # 注册子应用
]

安装mysql 在项目文件夹 => init.py

# 安装数据库
import pymysql
pymysql.install_as_MySQLdb()

256 => 打开cmd=>pip install ‘cryptog…’ =>更新

配置数据库信息

在 settingspy
配置数据库时,要创建数据库

DATABASES = { # 配置数据库 除端口外,其他都是数据库
    'default': {
        'ENGINE': 'django.db.backends.mysql', # 使用mysql数据库
        'HOST':'localhost', # 本机 127.0.0.1
        'POST': 3306,  # 端口
        'USER':'root',  # 用户名
        'PASSWORD':'123123', # 密码 自己的密码 字符串模式
        'NAME':'games',  # 数据库
    }
}
生成迁移文件

命令不能执行第二次

python manage.py makemigrations # 创建数据库迁移文件
执行迁移
python manage.py migrate # 根据数据库迁移文件生成对应 SQL 语句并执行
添加表中数据
方法一:admin控制台

创建超级用户
注意

  • 用户名不能用中文
  • 电子邮件跳过
  • 密码不透明,尽量用英文上的数字
python manage.py createsuperuser

注册表admin.py

from django.contrib import admin
# 导包
from myapp.models import game
# Register your models here.
admin.site.register(game)
方法二:小黑框
MVT三层联动

views层从model拿数据

# 导入
from myapp.models import game
def MyView(request):
    # 3.MVT三层联动
    # 通过game模型类,取出数据库中的数据(ORM操作),取出所有角色信息
    game_data = game.objects.all()
    content = { # 传递给页面数据,字典模式
        'games':game_data,
    }
    # render 返回一个模板页面
    return render(request,'index2.html',content)

html渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>展示数据库中角色信息</h3>
    <table width="500px" border="1px" align="center">
        <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.atk }}</td>
            <td>{{ game.level }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>
总结报错

1.要安装mysql

Did you install mysqlclient---没有安装mysql

2.进入链接 把decode改成encode

 File "C:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in l
ast_executed_query
    query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'     报错了

3.报256 => 打开cmd=>pip install ‘cryptog…’ =>更新

4.在settings.py 配置数据库中的NAME添加数据库

 File "C:\Users\asus\AppData\Local\Programs\Python\Python37\lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
django.db.utils.OperationalError: (1046, 'No database selected')  #报错报的没有选择数据库

5.在执行命令二时意外终止
删除库=>重新建库=>重新执行两个命令
6.python 打太快进入python页面,输入exit()退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值