欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

django快速入门(一)--简单学生管理系统--主体流程

程序员文章站 2022-03-11 21:15:19
前言环境准备为了解决python的版本问题,可以使用虚拟环境,这样子即使安装不同版本的django也不会互相影响。pip install virtualenv如果因为网速问题下载失败,可以使用国内豆瓣的源。pip install -i https://pypi.doubanio.com/simple/ virtualenvvirtualenv的使用virtualenv venv ......

前言

django 官方文档 https://docs.djangoproject.com/en/3.0/
肯定是官方文档最全最细,这里的流程一个是我自己的练习,适合初学者,当一个流程走下来,可以从整体上去把握官方文档,去查阅更细节的东西。
django快速入门(一)–简单学生管理系统–主体流程
django快速入门(二)–站点管理与模型
django快速入门(三)–视图
django快速入门(四)–模板,部署

MVC

大部分开发语言中都有MVC框架,核心思想就是解耦,降低功能之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用。这里的m表示model,主要用于对数据的封装。V表示view,用于向用户展示结果。C表示controller,是核心,用于处理请求,获取数据,返回结果。

MVT

djabgo是一款python的web开发框架,与MVC有所不同,属于MVT框架。m表示model,负责与数据库交互。v表示view,是核心,负责接收请求,获取数据,返回结果。t表示template,负责呈现内容到浏览器。

环境准备

下面所有的运行都是建立在ubuntu18上实验的。
为了解决python的版本问题,可以使用虚拟环境,这样即使安装不同版本的django也不会互相影响。

pip install virtualenv

如果因为网速问题下载失败,可以使用国内豆瓣的源。

pip install -i https://pypi.doubanio.com/simple/ virtualenv

virtualenv的使用

virtualenv venv  #创建名为venv的虚拟环境
source venv/bin/activate #进入虚拟环境
deactivate #退出当前虚拟化境

当虚拟环境比较多时,上述方式不容易集中管理,建议使用virtualenvwrapper.

pip install -i https://pypi.doubanio.com/simple/ virtualenvwrapper

装好后可以使用下面的命令找到安装的脚本,打开脚本按照里面的要求做就行。

sudo find / -name "virtualenvwrapper.sh" 

假如你是使用pip3安装的,可能会遇到以下报错:

[root@ ~]# source ~/.bashrc
/usr/bin/python: No module named virtualenvwrapper
virtualenvwrapper.sh: There was a problem running the initialization hooks.

If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is
set properly.

virtualenvwrapper的脚本默认使用的/usr/bin/python,我们需要修改成/usr/bin/python3。
修改步骤,在~/.bashrc文件中,在source /usr/local/bin/virtualenvwrapper.sh前,加入:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

也就是关于virtualenvwrapper.sh这段,修改成:

if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
    export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
fi

常用命令:

mkvirtualenv [虚拟环境名称]  #新建虚拟环境
rmvirtualenv [虚拟环境名称]  #删除虚拟环境
workon [虚拟环境名称]   # 进入指定虚拟环境
deactivate  # 退出当前虚拟环境
mkvirtualenv -p /usr/bin/python3 mysite-py3 #指定python版本安装

mysql

sudo apt-get install mysql-server mysql-client

登陆mysql,创建表格

CREATE DATABASE students CHARACTER SET utf8;

推荐一款linux下的可视化工具。
sudo apt-get install mysql-workbench

快速搭建步骤

mkvirtualenv -p /usr/bin/python3 mysite-py3

这里使用python3搭建,workon进入虚拟环境后,

pip intsall django==3.0

同时django还需要mysqlclient 1.3.13及以上

pip install mysqlclient

安装好后可查看django的版本。python -m django --version
新建一个名为mysite的文件夹后进入运行

django-admin startproject mysite
python manage.py startapp students

第一个是创建项目,第二个是创建应用,一个项目可以拥有多个应用。运行完第一个命令后有以下目录结构
django快速入门(一)--简单学生管理系统--主体流程这里的mysite就是项目了,进入项目的mysite后运行第二个名命令,有以下目录结构
django快速入门(一)--简单学生管理系统--主体流程这里的syudents就是应用。

修改配置文件

修改配置文件setting.py

INSTALLED_APPS = (
    'django.contrib.admin', # 管理员站点
    'django.contrib.auth', # 认证授权系统
    'django.contrib.contenttypes', # 内容类型框架
    'django.contrib.sessions', # 会话框架
    'django.contrib.messages', # 消息框架
    'django.contrib.staticfiles', # 
    'students' # 此处注册创建的应用
)
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR), 'templates'],  # 此处更改模板路径
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

##mysql作为数据库后端
# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/my.cnf',
        },
    }
}

from django.utils.translation import gettext_lazy as _
LANGUAGES = [
    ('zh-Hans', _('Chinese')),
]

LANGUAGE_CODE = 'zh-Hans'  
TIME_ZONE = 'Asia/Shanghai' #时区


# /etc/mysql/my.cnf  &&&&&&注意这里不是写在setting.py文件内,而是写在mysql的配置文件内
[client]
database = students
user = USER
password = PASSWORD
default-character-set = utf8

创建模型

在students/models.py写入下面内容

class ClassStudents(models.Model):
    name = models.CharField(max_length=10, null=False, blank=False)
    stu_number = models.PositiveIntegerField(null=False, blank=False)
    gender = models.BooleanField(default=True)
    isDelete = models.BooleanField(default=False)
    content = models.CharField(max_length=100, null=True, blank=False)

    def __str__(self):
        return self.name

数据库迁移:

python manage.py makemigrations
python manage.py migrate

模型就是对应着数据库,从上面内容可以看到创建了一张表,表的内容有姓名,学号,性别,软删除,内容 5个字段,运行python manage.py makemigrations 以数据库语言生成缓存,python manage.py migrate则是在mysql创建表格。
django快速入门(一)--简单学生管理系统--主体流程

创建视图

视图就是用来处理用户的请求,并返回内容。
在mysite/urls.py 写入以下内容

from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('students', include('students.urls', namespace='students')),
]

在students文件夹下新建urls.py文件,写入

from django.urls import path
from . import views

app_name = 'students'
urlpatterns = [
    path('', views.index, name='index')
    path(r'post', views.post_info, name='post_info'),
    path(r'post_result', views.receive_info, name='post_info_true')
]

上面就是请求的过程的url处理,一般而言,在项目的mysite的url中写入应用的命名空间,在应用students中新建url文件写入真正的正则表达式匹配内容,这是因为一个项目可以有多个应用,当应用多的时候,这样做各个应用的url不会耦合,不推荐全都写在项目的url中。

在students/views.py文件,写入

from django.shortcuts import render


# Create your views here.

def index(request):
    return render(request, 'students/index.html')

def post_info(request):
    return render(request, 'students/post_info.html')


def receive_info(request):
    uname = request.POST['uname']
    upwd = request.POST['upwd']
    post_content = request.POST['post_content']
    q = ClassStudents.objects.filter(name=uname)
    if q.count() != 1:
        page_show = "数据库没有查询到信息"
    else:
        students = q.first()
        stu_number = str(students.stu_number)
        if stu_number[-4:] == upwd:
            students.content = post_content
            students.save()
            page_show = "提交成功!"
        else:
            page_show = "你填写的学号后四位与记录不符合,请确认是否填写错误,或者与相关负责人联系!"
    context = {'page_show': page_show}
    return render(request, 'students/post_info_result.html', context)

上面的views.py 则是返回用户请求的内容,一般搭配模板使用。

创建模板

django快速入门(一)--简单学生管理系统--主体流程
在与mysite文件夹同级下建立上述文件夹及文件。
模板就是用来展现在浏览器的内容,和上面的原因一样,推建新建template文件夹,在各个应用中放入模板,这样当应用很多时,.html文件重名也没有关系。
在templates/students/中放入文件
post_info.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>测试</title>
</head>
<body>
<form method="post" action="{% url 'students:post_info_true'%}">
    {% csrf_token %}
    姓名:<input type="text" name="uname"/><br>
    学号后4位:<input type="password" name="upwd"/><br>
    提交的内容:<input type="text" name="post_content"/><br>
    <input type="submit" value="提交"/>
</form>
</body>
</html>

post_info_result.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ page_show }}<br>
</body>
</html>
 python manage.py runserver

运行上述命令试运行,可以正常访问http://127.0.0.1:8000/students页面的话就快速搭建成功了。
django快速入门(一)--简单学生管理系统--主体流程

本文地址:https://blog.csdn.net/qq_22808061/article/details/104883170