Django入门学习-了解基本模块
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
MVT设计了解
认识MVT
Django的web设计模型是MVT
- Model数据存储层处理所有数据相关的业务和数据库进行交互并提供数据的增删改查
- Template模板层也叫表现层具体来处理页面的显示
- View业务逻辑层处理具体的业务逻辑它的作用是连通Model 层和 Template
相关的模型可以参考Django MTV和MVC的区别
实际操作
Template
在Template中创建test.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{vaule}}
</body>
</html>
View:
在刚才创建的blog应用目录下的views.py中添加以下代码使用render将对用值渲染到html页面中
from django.shortcuts import render
def hello_my_django(request):
return render(request,"test.html",{"vaule":"hello my Django"})
路由配置
在djangoProject的urls.py中可以配置路由
4.0之前引入url模块的方式
from django.conf.urls import url
url(regex,view,name=None)
4.0之后可以直接
from django.urls import path
path('test',views.hello_my_django),
4.0后如果还想用url正则匹配可以使用以下方式引入
from django.urls import re_path as url
或者放到首页path('',views.hello_my_django),
上述 url 的参数解析如下
- regex匹配请求路径用正则表达式表示
- view指定 regex 匹配路径所对应的视图函数的名称
- name是给 url 地址起个别名在模板反向解析的时候使用
配置好后测试test路由
Model:
所有的 Model 都必须继承自django.db.models.Model在blog的models中添加以下内容class名在ORM框架中对应数据库表中的表名变量名对应数据库中表的字段如title等
class Book(models.Model): #创建 book 表
title=models.CharField( max_length=30,unique=True, verbose_name='书名')
public=models.CharField(max_length=50,verbose_name='出版社')
price=models.DecimalField(max_digits=7,decimal_places=2,verbose_name='定价')
def default_price(self):
return '¥30'
retail_price=models.DecimalField(max_digits=7,decimal_places=2,verbose_name='零售价',default=default_price)
def __str__(self):
return "title:%s pub:%s price:%s" % (self.title, self.public, self.price)
class Author(models.Model): #创建作者表
name=models.CharField(max_length=30,verbose_name='姓名')
email=models.EmailField(verbose_name='邮箱')
def __str__(self):
return '作者%s'%(self.name)
class UserInfo(models.Model): #创建用户信息表
username=models.CharField(max_length=24,verbose_name='用户注册')
password =models.CharField(max_length=24,verbose_name='密码')
然后在终端执行
python manage.py makemigrations python manage.py migrate
可以看到已经创建了对应的三张表
在执行完python manage.py makemigrations后在应用目录下会有一个migrations目录记录数据库信息以便以后迁移可以通过python manage.py sqlmigrate + 应用名 + 编号查看转换对应的sql语句
python manage.py sqlmigrate blog 0001_initial
默认的后台管理模块
上节创建完djangoProject项目后
打开改项目文件夹下的urls.py发现已经注册了并引入了admin模块
因为没有初始化所以无法登录
初始化admin模块
python manage.py createsuperuser
遇到报错
django.db.utils.OperationalError: no such table: auth_user
可以使用 python manage.py migrate 先创建数据库
可以看到数据库中多了这几张表
然后创建管理员账户
python manage.py createsuperuser
这里账户密码为admin/123456
对应表中也会多出相应的记录
完事可以登录了
应用中Admin注册
在应用中修改
from django.contrib import admin
# Register your models here.
from blog.models import Book, Author,UserInfo #这个需要我们自己导入相应的模型类数据表
admin.site.register([Book,Author,UserInfo])
启动应用后可以看到刚才的Book, Author,UserInfo模块已经注册到了管理后台可以可视化添加数据库记录了
参考