当前位置: 首页 > news >正文

创建Django项目

创建Django项目

django-admin startproject bookmanager

进入到bookmanager目录下运行

python manage.py runserver

在这里插入图片描述

创建子应用

python manage.py startapp book

注册子应用

使其与工程bookmanager建立联系

在这里插入图片描述

创建实体类

在book=>models里面

from django.db import models# Create your models here.class BookInfo (models.Model):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)

扩展:

class BookInfo (models.Model):name = models.CharField(max_length=10,unique=True ,verbose_name='书籍名称') # unique:是否唯一pub_date = models.DateField(null=True)readcount = models.IntegerField(default=0)commentcount = models.IntegerField(default=0)is_delete = models.BooleanField(default=False)class Meta:db_table = 'bookinfo' #修改表的名字verbose_name= '书籍管理' # admin站点的使用def __str__(self):return self.nameclass PeopleInfo (models.Model):GENDER_CHOICES=((1,'male'),(2,'female'))name = models.CharField(max_length=10)gender = models.SmallIntegerField(choices=GENDER_CHOICES,default=1) # 性别description = models.CharField(max_length=200 ,null=True)book = models.ForeignKey(BookInfo , on_delete=models.CASCADE)is_delete =  models.BooleanField(default=False)class Meta:db_table = 'peopleeinfo'verbose_name = '人物关系'def __str__(self):return self.name

1) 数据库表名

模型类如果未指明表名,Django默认以小写app应用名_小写模型类名为数据库表名。

可通过db_table指明数据库表名。

2) 关于主键

django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。

默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。

3) 属性命名限制

  • 不能是python的保留关键字。

  • 不允许使用连续的下划线,这是由django的查询方式决定的。

  • 定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:

    属性=models.字段类型(选项)
    

4)字段类型

类型说明
AutoField自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性
BooleanField布尔字段,值为True或False
NullBooleanField支持Null、True、False三种值
CharField字符串,参数max_length表示最大字符个数
TextField大文本字段,一般超过4000个字符时使用
IntegerField整数
DecimalField十进制浮点数, 参数max_digits表示总位数, 参数decimal_places表示小数位数
FloatField浮点数
DateField日期, 参数auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为False; 参数auto_now_add和auto_now是相互排斥的,组合将会发生错误
TimeField时间,参数同DateField
DateTimeField日期时间,参数同DateField
FileField上传文件字段
ImageField继承于FileField,对上传的内容进行校验,确保是有效的图片

5) 选项

选项说明
null如果为True,表示允许为空,默认值是False
blank如果为True,则该字段允许为空白,默认值是False
db_column字段的名称,如果未指定,则使用属性的名称
db_index若值为True, 则在表中会为此字段创建索引,默认值是False
default默认
primary_key若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用
unique如果为True, 这个字段在表中必须有唯一值,默认值是False

null是数据库范畴的概念,blank是表单验证范畴的

6) 外键

在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models中包含了可选常量:

  • CASCADE级联,删除主表数据时连通一起删除外键表中数据
  • PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据
  • SET_NULL设置为NULL,仅在该字段null=True允许为null时可用
  • SET_DEFAULT设置为默认值,仅在该字段设置了默认值时可用
  • **SET()**设置为特定值或者调用特定方法
  • DO_NOTHING不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常

模型迁移

#生成迁移文件
python manage.py makemigrations
#执行迁移
python manage.py migrate

表结构中就会有这两个类

在这里插入图片描述

站点管理

进入Django的管理界面

在这里插入图片描述

Log in | Django site admin

这个时候表中是没有管理员的账号密码,所以我们要创建

 python .\manage.py createsuperuser

在这里插入图片描述

在这里插入图片描述

输入刚才创建的账号密码后进入后台管理页面

发现没有我们创建的BookInfo和PeopleInfo模型

在book==》admin.py文件中注册自定义的模型类

from book.models import BookInfo, PeopleInfo# Register your models here.
admin.site.register([BookInfo, PeopleInfo])

重新启动并刷新页面

在这里插入图片描述

添加book信息

选择Add

在这里插入图片描述

添加之后发现不知道添加的类的内容

重新写模型的str类

class BookInfo (models.Model):name = models.CharField(max_length=10)def __str__(self):return self.name

路由设置

我们想要通过一下地址访问页面

http://127.0.0.1:8000/index/

在views.py中定义页面

def index(request):return HttpResponse("ok")

在urls.py中设置路由

from book.views import index
urlpatterns = [path('admin/', admin.site.urls),   #定义的index路由path('index/',index)
]

还有一种更加模块化的方法配置路由

先配置子应用的路由: 子应用中创建urls.py,定义路由

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

工程中映射

from django.contrib import admin
from django.urls import path,include
from book.views import index
urlpatterns = [path('admin/', admin.site.urls),#使用includepath('', include('book.urls'))
]

模版使用

1、创建index.html文件(路径在book/templates/book)

2、配置templates文件地址

在这里插入图片描述

3、渲染页面

def index(request):#render表示渲染return render(request,"book/index.html")

如果想要将返回的内容在页面中显示

def index(request):# context是字典类型context={'title' : "你好"}return render(request,"book/index.html",context=context)

页面中使用{{}}获取数据

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

静态文件

创建static文件夹,并在里面放入可以访问的静态图片

在这里插入图片描述

配置静态文件地址

在setting.py中有个STATIC_URL (静态文件的访问路径),在其下方设置

STATICFILES_DIRS=[os.path.join(BASE_DIR, 'book/static')
]

在这里插入图片描述

通过该地址进行访问

http://127.0.0.1:8000/static/python.png

App应用配置

在每个应用目录中都包含了apps.py文件,用于保存该应用的相关信息。

在创建应用时,Django会向apps.py文件中写入一个该应用的配置类,如

class BookConfig(AppConfig):default_auto_field = 'django.db.models.BigAutoField'name = 'book' #表明加载到那个子应用verbose_name ='图书管理' # 配置中文名

修改数据库为Mysql

将原来的sqlite的DATABASES替换成自己的mysql的

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',  # 默认'NAME': 'django','HOST': '127.0.0.1', # mysql的ip地址'PORT': 3306, # mysql的端口'USER': 'root','PASSWORD': 'root'}

init.py_中写入

import pymysqlpymysql.install_as_MySQLdb()

如果没有安装pymysql,记得安装一下,命令:

pip install pymysql
http://www.dtcms.com/a/519789.html

相关文章:

  • 注册个人网站的方法建设企业网站费用
  • 初识C语言13.自定义类型(联合体与枚举)
  • WebRTC入门指南:实时通信零基础
  • 深圳外贸营销型网站建设引擎搜索网站
  • Django 表单验证详解Form
  • k8s相关学习
  • 【2026计算机毕业设计】基于Django的社区婴幼儿预防接种系统
  • D030知识图谱科研文献论文推荐系统vue+django+Neo4j的知识图谱|论文本文相似度推荐|协同过滤
  • pg库、MySQL库和sqlite3基本操作
  • Android Studio新手开发第三十天
  • 住房建设部官方网站公示公告手机网站内容模块
  • 网站建设 数据库连接网站建设公司软件开
  • 深入理解栈与队列:核心特性与实战应用
  • 如何建一个免费的网站南昌做网站优化哪家好
  • 机器学习概念,算法原理及应用
  • Pytorch常用层总结
  • 【Deepseek OCR】重磅测试,mac环境下的体验【本人已经本地实验成功】
  • 轻量化(Lightweight)概念
  • [人工智能-大模型-58]:模型层技术 - 深度神经网络的本质是一个复杂的复合数学函数
  • 【小白笔记】将十进制数(Decimal)转换为二进制数(Binary),并计算二进制表示中“1”的个数
  • 长春怎么注册网站平台wordpress 视频列表
  • 【ReAcTable】面向表格问答任务的ReAct增强框架
  • Docker 部署 Elasticsearch 全流程手册
  • React 集成Redux数据状态管理 数据共享 全局共享
  • Docker与Nginx:现代Web部署的完美二重奏
  • 【JUnit实战3_08】第四章:从 JUnit 4 迁移到 JUnit 5
  • React 03
  • 前端基础之《React(2)—webpack简介-使用Babel》
  • 广州网站建设公司嘉御建设手机银行网站
  • 【Linux系统编程】软件包管理器