创建Django项目/模型迁移/站点管理/定义视图/url匹配/模板

@Django学习笔记

Django学习笔记(一)

MVT流程

在这里插入图片描述

一、pycharm创建django项目

创建django项目
工程列表

  • settings.py 是项目的整体配置文件
  • urls.py 是项目的URL配置文件
  • wsgi.py 是项目与WSGI兼容的Web服务器入口
  • manage.py 是项目管理文件,通过它管理项目
  1. 在终端启动django项目,默认8000端口:
(bookmanage) [root@localhost bookmanage]# python3 manage.py runserver
  1. 指定端口号:
python3 manage.py runserver 127.0.0.1:8001
  1. 查看帮助信息:
[root@localhost bookmanage]# python3 manage.py  --help
  1. 启动后的状态:
    在这里插入图片描述
  2. 页面:
    在这里插入图片描述

二、创建子应用

  1. 创建登录子应用
# 创建一个login子应用
python3 manage.py startapp login

在这里插入图片描述

  • admin.py文件跟网站的后台管理站点配置相关
  • apps.py文件用于配置当前子应用的相关信息
  • migrations.py目录用于存放数据库迁移历史文件
  • models.py文件用户保存数据库模型类
  • tests.py文件用于开发测试用例,编写单元测试
  • views.py文件用于编写Web应用视图
  1. 注册/安装子应用,在settings.py文件中添加子应用
# Application definition
# 安装/注册子应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'book.apps.BookConfig',    # 'book'
    'login.apps.LoginConfig',	# 'login'
    'pay.apps.PayConfig'	# 'pay'
]

三、模型的迁移

(1)使用Django进行数据库开发的提示:
  • MVT设计模式中的Model,专门负责和数据库交互,对应models.py
  • 由于model中内嵌了ORM框架,所以不需要直接面向数据库编程
  • 而是定义模型类,通过模型类和对象完成数据库表的增删改查
  • ORM框架就是把数据库表的行与相应的对象建立关联,互相转换,使得数据库的操作面向对象
  • 在这里插入图片描述
    在这里插入图片描述
使用Django进行数据库开发的步骤:
  1. 定义模型类
  2. 模型迁移
  3. 操作数据库
  4. 以下是models.py代码
from django.db import models

# Create your models here.
'''
1. 定义模型类
2. 模型迁移
    2.1 先生成迁移文件(不会在数据库中生成表,只会创建一个数据表和模型的对应关系)
    python3 manage.py makemigrations
    2.2 再迁移(会在数据库中生成表)
    python3 manage.py migrate
3. 操作数据库
注:
知道在哪里定义模型
模型继承自哪里
ORM对应的关系
表--->类  字段--->属性
'''

class BookInfo(models.Model):
    '''
    1.主键 当前会自动生成
    2。属性复制过来就可以
    '''
    # 定义name属性
    name = models.CharField(max_length=10)

class PeopleInfo(models.Model):
    # 姓名
    name = models.CharField(max_length=10)
    # 性别
    gender = models.BooleanField()
    # 外健
    book = models.ForeignKey(BookInfo,on_delete=models.CASCADE)

生成迁移文件

python3 manage.py makemigrations

生成成功:
在这里插入图片描述

在这里插入图片描述
迁移:在数据库中生成表

    python3 manage.py migrate

在settings.py文件可知道默认的数据库时SQlite3
在这里插入图片描述
需要安装sqlite驱动
在这里插入图片描述

四、admin站点管理

django自带管理后台 网址是127.0.0.1:8000/admin
在这里插入图片描述
将英文改成中文,时区改成上海:
在这里插入图片描述

(1)创建后台管理用户
admin 123456abc
在这里插入图片描述

(2)登录成功
在这里插入图片描述
(3)子应用注册模型-子应用中的admin.py

from django.contrib import admin
from book.models import BookInfo
# Register your models here.
# 注册模型
# admin.site.register(模型类)
admin.site.register(BookInfo)

页面展示,点击【增加】添加内容
在这里插入图片描述
返回并显示属性
在这里插入图片描述添加了一本书后,去数据库查看
在这里插入图片描述
在这里插入图片描述

五、视图的定义

views.py

from django.shortcuts import render
from django.http import HttpRequest,HttpResponse

# Create your views here.
'''
视图
1.视图就是python函数
2.函数的第一个参数就是请求,它是HttpRequest的实例对象
3.必须返回一个响应,响应是HttpResponse的实例对象/子类实例对象
'''
def index(request):
    return HttpResponse('index')

六、url匹配

主程序中的urls.py

'''
1.urlpatterns是列表格式,固定写法
2.在浏览器中输入的路径会和urlpatterns中的每一项顺序匹配
    如果匹配成功,则直接引导到相应的模块
    如果匹配不成功(将所有模块中的urlpatterns中的值都匹配過了)則,返回404
3.urlpatterns中的元素是url
    url的第一个参数是正则
4.浏览器中输入的路由,哪些部分参与正则匹配?
    http://ip:port/path/?key=value
    其中http://ip:port/和get  post参数?key=value不参与正则匹配
5.如果和当前的urlpatterns某一项匹配成功,则引导到子应用的urlpatterns中继续匹配
    如果匹配成功,则停止匹配相应的视图
    如果匹配不成功,则继续和其他工程中的url文件中的urlpatterns进行匹配
    
'''
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
#     添加一项,只要不是admin/,都引导到book子应用
    path('', include('book.urls')),

]

book子应用中新建一个urls.py,将视图中定义的函数名称传入

from django.urls import path, include
from book.views import index
urlpatterns = [
    path('index/',index),
]

运行结果
在这里插入图片描述

七、模板

(1) 创建模板文件
在这里插入图片描述

(2)工程文件中的settings.py中配置模板文件路径
在这里插入图片描述
(3)模板接收视图传入的数据

from django.shortcuts import render
from django.http import HttpRequest,HttpResponse

# Create your views here.
'''
def index(request):
    # 参数1 当前的请求
    # 参数2 模板文件
    return render(request,'index.html')
    # return HttpResponse('index')

(4)模板处理数据
views.py添加变量

from django.shortcuts import render
from django.http import HttpRequest,HttpResponse

def index(request):
    # 参数1 当前的请求
    # 参数2 模板文件
    # 参数3 context 传递参数
    name = '派大星'
    context = {
        'name': name
    }
    return render(request,'index.html',context = context)
    # return HttpResponse('index')

index.html引用变量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
<a href="#"> {{ name }} hello </a>
</body>
</html>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值