创建一个应用程序
创建一个django项目
在新建的目录下创建虚拟环境
python -m venv ll_env
激活/切换到 这个虚拟环境中
ll_env\Scripts\activate(windows cmd)
ll_env\Scripts\Activate(windows powershell)
source ll_env/bin/activate(linux)
关闭虚拟环境
deactivate
安装Django
pip install django
此处会报错 “找不到pytz的匹配分发”
原因是django的版本问题
使用一下命令,指定版本即可,当然也可以去django官网查看最新版本号,我就不去了
pip install django==2.2.*
在Django中创建项目
django-admin startproject learning_log .
注意learning_log后面的 . 不要忘记,不然到时候部署到服务器会很麻烦
检查一下,看一下现在都有啥,做到心理有个数
dir
dir learning_log
创建数据库
(从现在开始,在此虚拟环境中只需执行python,即使你在之前使用的是python3或者其他)
python manage.py migrate
运行项目,并查看项目的运行状态
python manage.py runserver
如果没有问题,你打开浏览器,查看127.0.0.1:8000即可看到以下,如果不行可以尝试localhost:8000
如果你刷新你的浏览器,命令行就会多一个记录
创建一个应用程序
搭建基础设施
打开一个新的cmd窗口,并切换到manage.py所在的目录下执行以下(不要关闭原命令窗口,否则你浏览器就不能访问到)
python manage.py startapp learning_logs
定义模型Topic
打开learning_log\learning_logs中的models.py
from django.db import models
# Create your models here.
# 创建Topic类并继承Model类
class Topic(models.Model):
"""用户学习的主题"""
# 定义属性text来表示主题名、标题、名称等,使用CharField方法,并必须指定存储的空间为200字符
text = models.CharField(max_length=200)
# 定义属性date_added来表示时间(即创建text的时间),使用DateTimeField方法,并传递实参auto_now_add=True
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
"""返回模型的字符串表示"""
# 当对象调用__str__()时,该返回的消息
return self.text
激活模型Topic
首先在learning_log\learning_log中的settins.py,将我们之前创建的项目learning_logs添加进去,让他能与Django交互
INSTALLED_APPS = [
# 我的应用程序
'learning_logs'
# 默认的应用程序
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
然后在命令行中输入以下,makemigrations定义该怎样修改数据库,她会生成一个0001_initial.py的迁移文件(以下所描述命令行,均指在django所在的虚拟空间的命令行)
python manage.py makemigrations learning_logs
最后让Django替我们完成修改数据库
python manage.py migrate
管理网站注册模型Topic
首先创建用户,使用createsuperuser命令,创建管理员,并自定义用户名,设置密码
python manage.py createsuperuser
然后向管理网站注册模型
在learning_log\learning_log中的admin.py添加以下内容
from django.contrib import admin
# Register your models here.
# 为向管理网站注册Topic
from .models import Topic
admin.site.register(Topic)
现在你访问路径/admin/会看到一个登录框,输入刚刚的用户名和密码,你将看到下面的样子,而且你还可以在页面上添加主题
定义模型Entry
Entry是一个多对一的关系,使,用户定义的多个条目都能关联主题,在models.py中添加以下代码
class Entry(models.Model):
""""学到的有关某个主体的具体情况知识"""
# 属性topic使用ForeignKey(外键),传递我们的主题与一个实参,使他能实现级联删除
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
# 属性text 使用户创建的条目不受限制
text = models.TextField()
# 属性date_added 使用DateTimeField将条目排序,且实参auto_mow_add实现 附带时间戳
date_added = models.DateTimeField(auto_now_add=True)
# 嵌套类 Meta
class Meta:
# 使用entries来表示多个条目
verbose_name_plural = 'entries'
def __str__(self):
"""返回的模型字符串表示"""
return f"{self.text[:50]}...."
迁移模型Entry
在命令行中使用格式:python manage.py makemigrations app_name,当然现在情况应该输入以下
python manage.py makemigrations learning_logs
然后依然使用以下命令——让Django替我们完成修改数据库
python manage.py migrate
管理网站注册模型Entry
在learning_log\learning_log中的admin.py添加成以下内容
from django.contrib import admin
# Register your models here.
# 为向管理网站注册Topic
from .models import Topic,Entry
admin.site.register(Topic)
admin.site.register(Entry)
好了,现在你应该大概了解了,模型创建与同步到数据库,进而同步到你的web中的流程了
如果你也顺利的话,现在你的网站是这样的