Django

本文介绍了如何创建一个Django项目,包括设置虚拟环境、安装Django、创建数据库、定义模型Topic和Entry、进行数据库迁移以及在管理网站注册模型。过程中详细阐述了每个步骤,如遇到的问题及解决方案,如指定Django版本解决pytz匹配问题。
摘要由CSDN通过智能技术生成

创建一个应用程序

创建一个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中的流程了

如果你也顺利的话,现在你的网站是这样的

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值