第一&第二单元 初识Django

django命令

创建django

django-admin startproject

创建子应用

python manage.py startapp

运行项目

python manage.py runserver

状态码

100 客户端可以继续请求http服务器
200 客户端请求服务端正常完成
301 客户端资源被移动到新的URL中
302 客户顿请求的资源被临时移动,客户端继续使用原有 URL;常用于三方登录之后的跳转
400 客户端语法错误或无法解析请求
403 服务端直接拒绝客户端的请求
404 客户端请求的资源找不到
405 客户端请求的方式不被允许
499 服务端处理该请求的内容花费时间过长
500 服务端内部错误  web服务配置文件读取错误 也可能是应为用户权限

静态与动态网站

静态网站

讲数据直接写死在页面中

动态网站

数据不再是写死的,而是通过数据库等手段传递到这些坑位上

Django框架

M-model:**模型**,操作数据库功能部分

V-View:**视图**,处理业务逻辑的位置,提取数据、获取用户数据等等操作都在这里

T-Template:**模版**,用来展示视图操作后的数据,也可以在模版中为用户提供表单,让用户可以提交数据

编写路由

打开项目主目录下的urls.py**文件,编写路由映射

from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls), #admin 控制界面路由
path('',views.index)
]

访问一个页面其实就是通过一个URL连接地址找到了服务器上的一个视图函数
path(route, view, name)

route: 匹配规则,是一个字符串
view:对应的视图函数

配置模板

一般我们会把存放HTML的文件夹名字命名为template,翻译过来就叫做模版文件,至于为啥叫模版,我们稍后来揭晓

# project.settings.py
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,并命名为index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hi</title>
</head>
<body>
<h1>真不错</h1>
<p>
    今天这个天气是<strong>晴天</strong>
</p>
</body>
</html>

视图渲染

有了html,目录也配置好了,那么紧接着就是让视图去返回这个文件,那么现在我们要引入一个新的方法叫做render,这个方法专门用来返回一个html页面,并且在未来,我们还会了解到这个方法的更高级用处,就是传递上下文模版变量

修改app下的视图方法,返回这个页面,页面路径不需要绝对路径,使用template/下的相对路径即可

# app.views.py
from django.shortcuts import render


def index(request):
    return render(request, 'index.html')

模板变量渲染

格式为

{{ var }}

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hi</title>
</head>
<body>
    <h1>真不错</h1>
    <p>
        今天这个天气是<strong>{{ weather }}</strong>
    </p>
</body>
</html>

模板语句

{% for%} 和{% if%}

1.
{% for var in sequence %}
    {{ var }}
{% endfor %}
2.
{% if test_list %}
    列表不为空
{% elif test_dict %}
    列表为空,字典不为空
{% else %}
    列表字典均为空
{% endif %}

生成迁移文件

创建数据库迁移文件

python manage.py makemigrations

执行迁移

根据数据库迁移文件生成对应 SQL 语句并执行

python manage.py migrate

注意点

  1. url放路由
  2. index前端
  3. views存放数据
  4. static静态数据
  5. setting底部放置静态资源url
  6. setting内数据库配置
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',# 使用mysql数据库
       'HOST':"localhost",# 主机
       'PORT':3306,# 端口
       'user':'root',# 用户名
       'PASSWORD':'123' ,# 密码
       'NAME':'game' # 数据库
   }
}
  1. 注册子应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',  #注册子应用
]
  1. 配置url
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

admin控制台

创建超级用户

python manage.py createsuperuser

mvt三重联动

views内代码

def MyView(request):
    # 通过game模型类取出数据库中数据(ORM操作),去除左右角色信息
    game_date = game.objects.all()
    content = { # 传递给页面的数据
        'games':game_date,
    }
    # reder返回一个模板页面
    return render(request,'index2.html',content)
    

<注意>

这里使用**all**方法,代表获取某表中的所有数据

列表循环输出

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>展示数据库中的角色信息</h3>
    <table width="800px" border="1">
        <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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值