如何⽤Python快速开发⼀个⽹站
如何⽤ Python 快速开发⼀个⽹站
Python ⽤来开发⽹站的框架很多,本次 Chat 选⽤ Django 来带⼤家开发⼀个简单的⽹站。⽹站开发需要掌握的知识⽐较多,但是我们是⽤开源框架可以⼤⼤减少我们的⼯作量,对底层实现原理也不需要完全了解。
⼀、开发环境的搭建
Django 是 Python ⽤来开发 Web 应⽤程序的⼀个框架,采⽤的 MTV 模式,实际上 MTV 模式和 MVC 模式没有本质的区别,MTV 只是MVC 的⼀个衍⽣。
MVC(Model View Controller)是指模型、视图和控制层,在该模式下三层是分离的,我们通过视图层向⽤户展⽰数据,⽤户进⾏操作后通过控制层执⾏逻辑操作,最后使⽤模型层修改数据库中的数据。⽽ MTV(Model Tempalte View)和 MVC 是⼀样的,在 MTV 中分为模型、模板和视图层。这⾥的视图层相当于 MVC 中的控制层(Controller),⽽模板层则相当于 MVC 中的 View。
1.1 Python 环境安装
安装 Django 的前提就是有 Python 环境,我们先安装 Python 环境。进⼊相应版本,这⾥选取 Python 3.7:
版本可以⾃⾏选择,但是不推荐 2.x 坂本。我们只需要打开⽂件安装就可以了。在安装过程中,我们勾选 add to path 就不需要⾃⼰配置环境变量了。
1.2 Django 安装
因为 Django 版本不同语法⽅⾯也有⼀些差异,所以我们要先确定使⽤哪个版本。如下图:
我们可以直接使⽤ pip 安装:
pip install django==2.2
安装完成后我们就可以开始使⽤ Django 了。
1.3 运⾏项⽬
HelloWorld 是我们最基本的案例了,我们来试试开发⼀个最简单的 Django 项⽬。我们在安装 Django 后,可以在 Python 的安装⽬录下/Script ⽂件夹下发现 程序,这个程序的作⽤就是开启 Django 项⽬。我们在 Script ⽬录下打开命令⾏。如图,红框内输⼊ cmd:
然后在命令⾏中执⾏如下语句:
django-admin startproject mysite
其中 mysite 就是 Web 应⽤的名称。执⾏后会在你的 Script ⽬录下⽣成⼀个 mysite ⽬录,⽬录下就是⼀些项⽬⽂件。或者我们可以通过cd 操作切换到其它⽬录开始项⽬。
创建成功后⽬录结构如下:
实际上我们现在已经写完了我们的第⼀个⽹站,我们可以进⼊项⽬的根⽬录:
cd mysite
然后运⾏服务端:
python manage.py runserver
执⾏该语句实际上就是运⾏了 manage.py ⽂件,控制台显⽰如下:
D:\CodeField\Python\Scripts\mysite>Python manage.py runserver
Watching for file changes with StatReloader
Performing
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them.
March 03, 2020 - 12:45:11
Django version 2.2.10, using settings 'mysite.settings'
\# 项⽬ip地址
Starting development server at 127.0.0.1:8000/
Quit the server with CTRL-BREAK.
我们可以看到项⽬运⾏在 127.0.0.1:8000 下,我们在浏览器输⼊该 ip 显⽰如下页⾯:
到现在为⽌,我们不需要什么⽹络协议相关的知识就完成了环境的搭建和第⼀个项⽬的运⾏。但是在
我们开始⾃⼰着⼿写⼀个⽹站之前,我们简单看⼀下⼀个⽹站是怎么运⾏的。
⼆、⽹络协议相关知识
在我们访问⼀个⽹站时,我们在浏览器输⼊⽹址(域名),然后通过域名系统(DNS)解析出 IP 地址,然后就开始了我们的⽹络请求。我们向服务器发出请求,也就是告诉服务器我们要你拿东西。服务器接受了你的请求,然后经过⼀系列逻辑操作,将对应的:none;-webkit-font-smoothing:antialiased;box-sizing:border-box;margin:0px 0px 1.1em;outline:0px;">我们进⼊ mysite/mysite/urls.py ⽂件,代码如下:
ib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
其实这个⽂件就是将 url 和函数建⽴关系,也就是路由系统。⼤家可以尝试在浏览器访问 localhost:8000/admin,这个也是 Django 本⾝预设的页⾯。
我们⾃⼰写⼀个路由关系:
ib import admin
from django.urls import path
\# 导⼊httpresponse
from django.shortcuts import HttpResponse
\#定义函数
def hello(request):
return HttpResponse('hello world')
urlpatterns = [
path('admin/', admin.site.urls),
\# 将localhost:8000/hello 和函数hello建⽴联系
path('hello/', hello),
]
我们定义了⼀个函数 hello,这个函数有个参数 request,request 中包含了我们的所有请求信息。现在我们暂时⽤不到,然后我们直接返回 HttpResponse ('hello world')。我们使⽤ HttpResponse 可以直接返回我们要在页⾯上显⽰的内容即可,除了⽂本,我们还可以显⽰HTML 标签。
然后我们在 urlpatterns 中写 url 和函数的对应 path ('hello/', hello),第⼀个参数是 url 的名称,第⼆个参数为函数名称(不能加括号)。然后我们就可以访问这个页⾯了,在浏览器中输⼊ localhost:8000/hello,就可以显⽰ hello world 页⾯了。
在上⾯我们在浏览器中输⼊ IP,就是向服务器发送了⼀次请求,服务端通过 urls.py 中的路由关系,到 hello 函数,在 hello 函数中执⾏⼀系列逻辑操作,然后通过 return 返回响应的数据。
三、完善项⽬⽬录
在上⾯的例⼦中,我们只是简单的返回⼀个字符页⾯,在我们实际⽣活中,页⾯要更加丰富。所以我们还需要 HTML 页⾯,另外还需要⼀些静态的资源。我们先把项⽬⽬录完善⼀下。
3.1 项⽬⽬录
最初始的项⽬只有 mysite ⽂件夹和 manage.py ⽂件,⽽实际上我们还需要⼀个 templates ⽂件夹存放⼀个 HTML 页⾯,另外我们还需要⼀个 static ⽂件夹存放静态⽂件(CSS、JS、图⽚、⽂件等)。完善后⽬录如下:
然后我们将这两个⽬录在 setting 中配置⼀下。我们先配置 templates:
TEMPLATES = [
{
\# 修改该⾏
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP\_DIRS': True,
'OPTIONS': {
'context\_processors': [
't\_processors.debug',
't\_quest',
't\_processors.auth',
't\_ssages',
],
},
},
]
我们到 settings.py 中的 TEMPLATES 变量,修改成 'DIRS': [os.path.join (BASE_DIR, 'templates')]。然后我们再配置⼀下 static ⽂件夹,直接下 settings.py 下添加如下代码:
STATICFILES_DIRS = (
\# 我们可以通过static访问静态⽂件
os.path.join(BASE_DIR, 'static'),
)
另外我们注释⼀条语句:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'ib.sessions.middleware.SessionMiddleware',
'django.middlewaremon.CommonMiddleware',
\# 注释掉
\# 'django.middleware.csrf.CsrfViewMiddleware',
'ib.auth.middleware.AuthenticationMiddleware',
'ssages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
3.2 响应⼀个页⾯
在 MTV 模式中 templates 就是我们的模板层,也就是 MVC 中的视图层,我们在 templates 中放⼊ HTML 的页⾯模板,下⾯我们创建⼀个简单的 HTML 页⾯ hello.html,该页⾯中只有⼀张图⽚。
\<!DOCTYPE html\>
\<html lang="en"\>
\<head\>
\<meta charset="UTF-8"\>
\<title\>Title\</title\>
python怎么读取py文件\</head\>
\<body\>
\<img src="/static/1.jpg"\>
\</body\>
\</html\>
我们看到图⽚的路径是 /static/1.jpg,这⾥的 static 并不是⽬录 static,⽽是在 settings.py 中配置的 static。配置的时候可以⽬录和访问路径不同名。我们在 static ⽬录下放⼀张图⽚ 1.jpg。
我们知道返回数据是在 urls.py 中实现的,我们进⼊该⽂件:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论