一、创建项目:
在项目工作目录 D:\WorkSpace\Python 激活 Py372Django 虚拟环境,如下所示:
D:\WorkSpace\Python>workon Py372Django
(Py372Django) D:\WorkSpace\Python>
输入创建项目命令:django-admin.py startproject DjangoPro ,如下所示:
(Py372Django) D:\WorkSpace\Python>django-admin.py startproject DjangoPro
进入项目目录
cd DjangoPro
在项目目录下有如下文件:
manager.py 命令行工具,可以使我们以多种方式对 Django 项目进行交互
如果使用 PyCharm IDE 则可以通过 菜单栏 → Tools → Run manage.py Task 启动 manager.py 工具
进入二级 DjangoPro 目录,在该目录下有如下几个文件:
settings.py 项目的配置文件
urls.py 项目的 URL 配置文件
wsgi.py 项目与 WSGI 兼容的 Web 服务器入口
二、创建应用:
通过 python manage.py startapp xxx 命令创建 book 应用,如下代码:
(Py372Django) D:\WorkSpace\Python\DjangoPro>python manage.py startapp book
在 book 应用的 models.py 文件中编写模型代码,比如:
from django.db import models
# Create your models here.
class BookInfo(models.Model):
btitle = models.CharField(max_length=20)
bpubdate = models.DateTimeField()
# 这里的 self.pk 是指 primary_key 主键
def __str__(self): # 这里可以设置管理界面显示图书信息的格式
# return str(self.pk) + '\t' + self.btitle + '\t' + str(self.bpubdate)
return self.btitle
class HeroInfo(models.Model):
hname = models.CharField(max_length=20)
hgender = models.BooleanField()
hcontent = models.CharField(max_length=255)
# 如果出现如下错误: 则需要增加 on_delete=models.CASCADE 参数
# TypeError: __init__() missing 1 required positional argument: 'on_delete'
hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE) # 通过 id 引用外键
def __str__(self):
# return str(self.pk) + '\t' + self.hname + '\t' + self.hcontent
return self.hname
模型代码写完之后,进入应用的注册。
三、注册应用:
打开 settings.py 文件,在 INSTALLED_APPS 注册应用 'book',代码如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'book'
]
四、生成迁移文件:根据模型类生成当前选择的数据库对应的 SQL 语句
(Py372Django) D:\WorkSpace\Python\DjangoPro>python manage.py makemigrations
这个时候在应用 book 的 migrations 目录下会生成 0001_initial.py 文件。
五、执行迁移文件:执行 SQL 语句,生成对应的表结构
(Py372Django) D:\WorkSpace\Python\DjangoPro>python manage.py migrate
这时候会把 settings.py 配置文件中注册的应用生成对应的表结构。
注意,这里使用的是默认的数据库 db.sqlite3 ,使用 PyCharm 开发时,在查看 db.sqlite3 数据库的时候,发现无法查看表结构,则在操作界面里面有 Download 链接,点击下载驱动,过程如下:
六、创建管理员账号:通过 python manage.py createsuperuser 并根据提示输入用户名 密码 邮箱,如下代码:
(Py372Django) D:\WorkSpace\Python\DjangoPro>python manage.py createsuperuser
Username (leave blank to use 'administrator'): zhenglushan
Email address: 276517382@qq.com
Password:a5s7sh4u
Password (again):a5s7sh4u
Superuser created successfully.
七、启动项目:
(Py372Django) D:\WorkSpace\Python\DjangoPro>python manage.py runserver 127.0.0.1:8000
然后打开 http://127.0.0.1:8000/admin/ 即可访问管理界面。
到这里,Django 项目算是创建完成了,下面就是进行开发了。
知识点:
1、将模型添加到 Django Admin 管理:打开 book/admin.py 编写如下代码
from django.contrib import admin
from book.models import BookInfo
from book.models import HeroInfo
admin.site.register(BookInfo) # 注册 BookInfo 模型
admin.site.register(HeroInfo) # 注册 HeroInfo 模型
2、将模型显示方式添加到 Django Admin 管理:打开 book/admin.py 编写如下代码
from django.contrib import admin
# Register your models here. 在这里注册你的模型,
# 注册时,同时也可以加上显示方式
from book.models import BookInfo
from book.models import HeroInfo
# 定义模型在 Admin 界面的显示方式
class BookInfoAdmin(admin.ModelAdmin):
# 列表页属性
# 显示字段,可以点击列头进行排序
list_display = ['id', 'btitle', 'bpubdate']
# 过滤字段,过滤框会出现在右侧
list_filter = ['btitle']
# 搜索字段,搜索框会出现在上侧
search_fields = ['btitle']
# 分页,分页框会出现在下侧
list_per_page = 1
# 添加或修改页面属性
# 定义属性显示的先后顺序
# fields = ['bpubdate','btitle']
# 定义属性分组,或者说分成几个部分进行显示
fieldsets = [
('basic', {'fields': ['btitle']}),
('more', {'fields': ['bpubdate']})
]
# 定义模型在 Admin 界面的显示方式
class HeroInfoAdmin(admin.ModelAdmin):
list_display = ['id', 'hname', 'hcontent']
admin.site.register(BookInfo, BookInfoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)
3、修改编码和时区:
打开项目目录下的 settings.py 文件,做如下配置项的修改:
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans' # 设置编码
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai' # 设置时区
# 编码和时区设置完成之后,重启服务器,登录服务器,发现界面变成中文界面了。
4、修改后台登录地址:
后台默认的登录地址为 /admin/ 如果修改成其他的,打开项目目录下的 urls.py 文件,做如下修改:
urlpatterns = [
#path('admin/', admin.site.urls), # 管理页面默认访问路径
path('zlsadmin/', admin.site.urls), # 修改管理页面访问路径
]
5、修改数据库类型:
Django 默认使用的是 db.sqlite3 数据库,该配置代码在项目目录下的 settings.py 文件的 DATABASES 配置项,如何修改成 MySQL 数据库配置呢?
首先需要安装 MySQL 数据库,然后在虚拟环境下安装 MySQL 驱动,代码如下:
pip install mysqlclient
接着修改 DATABASES 配置项,代码如下:
DATABASES = {
# 需要安装 mysql 驱动,在虚拟环境中执行 pip install mysqlclient 命令
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangoedu',
'USER':'root',
'PASSWORD':'root',
'HOST':'localhost'
}
}
修改数据库类型的配置就完成了。