15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 如何用Python Django创建网站?系列文章02(持续更新...)

如何用Python Django创建网站?系列文章02(持续更新...)

时间:2023-07-11 16:12:01 | 来源:网站运营

时间:2023-07-11 16:12:01 来源:网站运营

如何用Python Django创建网站?系列文章02(持续更新...):第二篇文章主要介绍的是如何借助Django的MTV框架搭建网站(如下图所示):

我们可以参考这个顺序在PyCharm进行代码的编写。




假设之前的准备工作都做好了,输入法搞定了,谷歌浏览器安装好了;

还需要安装python3-pip:

sudo apt-get update

apt-get install python3-pip




python3-pip好了,再安装虚拟环境,参考下面的链接:

创建虚拟环境

virtualenv GP1

激活虚拟环境

source GP1/bin/activate




创建好了虚拟环境,就可以安装django,切记要指定版本!

pip3 install django==1.11.7




安装完毕django之后,开始安装mysql数据库




也安装好了,而且连接数据库的驱动pymysql也配置完成了。我们就可以开始创建项目啦!




cd Projects/Project_Django/GP1

进入GP1文件夹之后,路径看上去是这样的:

(GP1) psyjt@psyjt-ThinkPad-X1-Carbon-2nd:~/Projects/Project_Django/GP1$

当我们看到命令行前面出现虚拟环境的名字GP1(意思是Good Project 1)的意思,说明虚拟环境已经打开了,更确切的说是已经安装了基于Python3的Django == 1.11.7的虚拟环境已经启动起来了。

梦想总是要有的,万一实现了呢



A. 创建项目+应用

我们准备在当前的GP1虚拟环境中开启一个叫做mBlog的喵星人博客网站项目,并创建一个叫做mainsite(主页)的app应用。

django-admin startproject mBlog

cd mBlog

python3 manage.py startapp mainsite

这个时候就可以启动PyCharm,然后打开mBlog项目。




B. 设置项目的解释器

当进入到PyCharm环境中,切记第一步是要(在File菜单的Settings选项里)设定整个项目的解释器:

里边有两个选项,Project Structure 和 Python Interpreter,我们选择Python Interpreter,然后在下拉菜单中选择带有Python3 + GP1的选项。

点击Apply,它有一个载入的过程,过一会点OK确认。




C. 注册应用mainsite

我们在创建项目之后,紧跟着创建了一个mainsite应用app,这个应用mBlog项目是不认的。为什么不认?因为这个应用并没有注册!

之所以没有注册,是因为应用本身是独立于项目存在的,这个可能是django开发者一开始就设定好的,这样做的好处是,方便把某个应用从一个项目迁移到另外一个项目中。应用和项目解耦合的结果是,在用命令创建应用app时,它是独立进行的,不会自动化地在项目中注册。如果你要把创建的应用纳入到项目中,需要手动注册一下。

我们要打开mBlog项目同名文件夹mBlog下的settings.py文件,把mainsite应用写入到INSTALLED_APPS里边:




D. 修改配置文件

配置文件还有几处需要修改:

(1)ALLOWED_HOSTS = [],修改成ALLOWED_HOSTS = [“*”]。

(2)LANGUAGE_CODE = 'en-us',修改成LANGUAGE_CODE = 'zh-hans'。

(3)TIME_ZONE = 'UTC',修改成TIME_ZONE = 'Asia/Shanghai'。

(4)USE_TZ = True,修改成USE_TZ = False。

(5)手动添加templates文件夹,这个文件夹和应用mainsite文件夹是平行的。

这一步具体实现的方法是,在最左边上面的mBlog项目文件夹的位置右键点击,选择新建文件夹Directory,这样才能保证这个文件夹创建的位置与应用mainsite文件夹在同一级目录中。同时,特别需要强调的是,这个添加的过程,还要伴随2个操作:

第1个操作是,在添加了文件夹之后,在PyCharm中要右键点击文件夹templates,如下图所示:

Mark Directory as --> Template Folder,

这个把templates文件夹标记为模版文件夹“Template Folder”的过程,不会改变项目的任何代码,但是,标记了Template Folder会影响之后PyCharm的代码提示功能。




第2个操作是,修改settings.py文件中55行左右的位置,在TEMPLATES中,找到 'DIRS': [],在这个中括号中添加一段代码:

os.path.join(BASE_DIR,'templates'),

如下图所示:

os.path.join是拼接路径的意思,这里的BASE_DIR就是整个项目文件夹路径,它和'templates'拼接在一起就组成了模版文件夹路径。




补充说明:这个截图,我故意把53行的代码也包括进来,

ROOT_URLCONF = 'mBlog.urls'

它等于指定了整个django项目的入口,它是从mBlog文件夹中的urls.py文件开始的。







(6)在mysql中创建数据库db_mBlog,在PyCharm中连接django项目mBlog和mysql中的数据库db_mBlog,并生成迁移文件。

PyCharm已经集成了命令窗口,所以这个时候,只需要点击整个PyCharm界面的左下角位置三个选项:“TODO”,“Python Console”,和“Terminal”,其中的Terminal选项,就可以打开终端。这个终端和Ubuntu系统终端是一摸一样的,用它的好处是连切换窗口的操作都省了,非常方便。

我们可以在其中先实现进入mysql数据库的操作:




First::

在mysql环境下建立一个新的数据库db_mBlog:

mysql> create database db_mBlog charset=utf8;

这里要注意别忘记写charset=utf8这句话,因为,如果没有这句话,你没有办法导入中文。




这个时候可以调用下面这句命令看看mysql里边都有哪些数据库:

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| GP1DjangoTemplate |

| db_mBlog |

| db_psyBlog |

| mysql |

| performance_schema |

| sys |

+--------------------+

7 rows in set (0.01 sec)




Second::

有了db_mBlog之后,我们就可以把它纳入到django项目mBlog中,这个连接的过程需要在settings.py中修改数据库连接部分的代码,与此同时手动连接mysql数据库db_mBlog。我们先来看修改代码的位置,它在79行位置(大概,可能不同的项目不一样),这一行开头写着“DATABASES = {”。

它原来的内容是:

'default': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

}

要修改成:

'default': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'db_mBlog',

'USER': 'root',

'PASSWORD': 'Psycho0810',

'HOST':'localhost',

'PORT':'3306',

}




Third::

手动连接,点击右侧竖着的那两个选项中的"Database",然后点击“+”号-->选择Data Sources这个选项中的MySQL:

这个时候会弹出一个界面:

小心,这是个坑,因为一般人进入这个界面,想当然地会认为是从第一个编辑框Name开始填写,错了!!!

你只需要填写User + Password + Database就可以,它会自动把信息合并了显示在Name对着的编辑框中,如下图所示:

这时候你点击一下“Test Connection”按钮,它如果显示打勾,说明连接数据库成功了。




Fourth::

在项目mBlog的初始化文件__init__.py中,添加运行pymysql驱动的代码:

import pymysql

pymysql.install_as_MySQLdb()







E. 引入Hello主页的简单项目

一般整个项目的框架搭建完后,都是会拿一个最简单的“Hello, World!”试着运行一次,向互联网世界宣告“我来啦!”,以及测试一下Django环境是不是搭建好了(不需要引入模版Template和与数据库交互的模型Models)。




进来的url请求,发给了项目文件夹mBlog中的urls.py来处理,我们来截个图:

注意添加的这句话:

url(r'^hello/', views.hello),

这句话的意思是,如果你的url的路径位置是hello,那么,就会触发mainsite的views.py文件中的hello回调函数。

注意⚠️:这里的views一开始输入的时候,是有一个红色的下划波浪线提醒,说明这个文件里边是没有views这个变量或者参数的,它在哪里?它其实是隶属于mainsite应用的,所以,重点来了,在PyCharm开发者工具中,我们要把光标放在views的位置,然后按下 Alt + Enter 组合快捷键,就可以跳出提示,让你添加模块。这个时候我们选择mainsite中的views就可以了,就会出现上图中urlpatterns前面的代码:

from mainsite import views

这个时候,views下的红色波浪线就消失来;然后,你把光标放在hello这个单词上,按Alt + Enter,就会瞬间切换到 mainsite应用的views.py文件下,截图看一下里边的代码:

这个是一个函数,写着

def hello(request): return none把none这个单词改成HttpResponse之后,也会出现红色下划波浪线,我们需要用Alt + Enter从django.http模块中引入HttpResponse这个函数(from django.http import HttpResponse),在HttpResponse函数中输入“Hello, World!”这个简单项目就算完成了。




迫不及待运行数据库迁移:

python3 manage.py makemigrations

python3 manage.py migrate

和运行服务器的语句

python3 manage.py runserver

看看效果:

成功啦!这个成功说明很多问题,我们最好这个时候庆祝一下,来来来,Give me five!




F. 引入包括完整MTV流程的项目

借助Python + Django框架创建网站,主要关注的是模型(Model)、模板(Template)和视图(Views)三者如何搭配。因此,Django 也被称为 MTV 框架:

M 代表模型(Model),即数据存取层。 该层处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。

T 代表模板(Template),即表现层。 该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。

V 代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。




在项目开始之前,需求分析必不可少,首先,一定要具体列出这个项目要实现的目标(要满足用户什么需求?或者要解决什么问题?)

我们这次的项目是想做个心理学博客,帮助用户了解心理学的九大分支(如下图所示)。

在了解了项目的需求之后,我们要开启MTV工作中的第一部分Model的工作,也就是设计数据库中的表格,以提供数据信息,展示在网页中。

点开mainsite应用中的models.py文件,输入下面这段代码:

from django.db import models# Create your models here.class School(models.Model): title = models.CharField(max_length=200) slug = models.CharField(max_length=200) intro = models.TextField() def __unicode__(self): return self.title


在Django中,设计表格和定义一个类本质上是一码事。点击下方的终端,输入:

python3 manage.py makemigrations

python3 manage.py migrate

就可以在数据库db_mBlog中添加新定义的表格,系统会自动将这个表格命名成mainsite_school。

注意:这个时候数据库中的这张新建的表格里什么内容都没有。我们需要用一种机制向数据库里添加内容。这件事情,是可以通过PyCharm来手动操作完成的,这样做在本地的开发环境是可以的,但是,如果切换到阿里云服务器上,就没有办法手动操作了。因此,我们将任务的目标设置为“管理员可以手动向配置好的表格中添加内容”。




我们接下来要在终端中创建一个超级管理员账号:

python3 manage.py createsuperuser

User: admin

E-Mail: 10045198@qq.com

Password: ··· ····




最后,就是要引入管理员添加内容的功能。

如果想把之前定义好的School类纳入admin的管理番位,需要修改应用mainsite中的admin.py文件,这个文件中原本的内容是:

from django.contrib import admin

# Register your models here.

需要改成:

from django.contrib import admin

# Register your models here.

from mainsite.models import School

admin.site.register(School)




完成以上操作之后,再次打开网站运行,通过浏览器访问

http://127.0.0.1:8000/admin

浏览器会呈现一个登录界面,输入用户名admin和之前设定好的密码:

登录进去浏览器的网页里的内容是这样的:

管理员界面应该是Django都设计好的,通过这种方式就可以手动往数据库的表格中添加内容了,就如下图所示,我们添加了心理学九大派系的title,slug和intro:

这是在网页中,我们也可以直接在PyCharm开发者环境中通过右侧的数据库连接,打开mainsite_shcool表格,看看所有心理学派系信息输入的效果:

就这样,我们的MTV中的Model部分的工作就完成了。







MTV中的第二部分是设计模版Template,也就是要规划呈现的网页的样子。我们要设计两个网页,一个是主页index.html,呈现所有9个心理学学派的title;另外一个是分页psySchool.html,呈现单个心理学学派的title和它的介绍信息。

新建html文件的操作,一般是通过PyCharm在templates文件夹图标上右键选择新建.html文件,在弹出的对话框中填写文件名,用这样的操作,我们可以手动生成index.html和psySchool.html两个文件。

对于index.html来说,一个标题“贯穿心理学发展历史的九大学派”,加上9个学派的title就可以。这需要用到的是<h1> 贯穿心理学发展历史的九大学派 </h1>,还有一个ul(ul是无序里列表的意思,与ul相对的是ol有序列表),加上9个li(列表项目)。因为这9个title是地址,所以在列表里的每一个项目其实是一个链接。




而对于psySchool.html来说,一个标题,一个内容和一个返回。这需要用到<h1>{{school.title}}</h1>,这里第一次出现了Django专属的模版格式,我们管它叫“坑”(一种预留变量的机制),它是为以后填入内容做准备的;还有,我们会把介绍文字写入到正文中{{school.intro}};以及最后需要专门设置一个返回地址,从当前页返回到主页。







MTV中的第三部分是控制Views,无论是这一章的一开始那张MTV的图片,还是在第(8)的位置上放置的MTV‘图片,Views都处于中心C位。它负责根据用户的url请求,来自项目mBlog默认的urls.py文件,来触发与url对应的回调函数;然后,在回调函数中,调取.html模版(网页结构)和models模型(数据库中的数据),渲染(填坑)过后,再反馈给用户。

所以,Views这一步并不是直接在views.py文件中操作,而是从urls.py文件中设计url正则表达的语句,主要是指向主页和分页,我们一起来看一下效果:

我们设计了两个url规则,一个是主页规则,相当于除了ip地址或者域名,加上端口之外,其他什么都不需要填写;另外一个是分页规则,相当于多了一个路径/school,并且在这个路径下又多了一个/slug。在正则表达里边,slug字符串,可以用“(/w+)$“来表示。

我们可以把界面切换到views里边,看看主页和分页的回调函数的样子:

主页的回调函数,第一句

template = get_template('index.html')

意思是载入‘index.html’模版。

第二句,

schools = School.objects.all()

意思是获取所有的School对象的内容,赋值给schools。

第三句,

html = template.render(locals())

意思是对模版对象进行渲染,locals()代表当前函数局部用到的所有变量集合,这里主要是schools变量,它里边包含所有从数据库里边获取的学派相关的信息(title + slug + intro)。

渲染好的网页,就可以通过HttpResponse函数进行返回,相当于推送给浏览器供用户浏览。




注意⚠️:因为截图只能截取屏幕内的内容的原因,这个地方因为用到了School类,是有一句from .models import School,感谢本站网友的提醒!♥️发大红包♥️




我们来看一下主页和行为注意学派分页的效果:

主页进来是这样的:

点击行为主义学派,就进入介绍行为主义学派的分页:

就这样,一个完整的MTV的流程就走完了。




当我们准备好了一个Django项目之后,我们就可以把项目部署到阿里云服务器,看一下最终发布的效果。









































































关键词:文章,系列,持续,更新,创建

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭