我们通过各种方式辛辛苦苦的获取到了数据,那么接下来呢?还需要做些什么。
- 可以用获取到的图片做机器学习的训练数据
- 可以用获取的商品,招聘等信息做数据分析,看看什么卖的好,什么职位工资高。
- 可以用获取到的数据搭建自己的网站。比如各种搜索网站。
关于机器学习,数据分析大家可以查看一下我们其他的专栏文章。
今天,就带着大家一起看看如何用Django快速搭建一个前后台齐全的网站。
-
在工作目录下创建一个Pyweb的文件夹,用来保存代码。当然,这个目录的名字你可以任意取,但不要有中文和特殊符号。
-
在Pyweb文件夹下面创建一个env的文件夹,这个文件夹就是虚拟机的名,通过如下命令创建虚拟机。
cd env python -m venv .
注意venv和 . 之间有一个空格。
这里演示的是在Windows系统下的创建方式,其他操作系统大家自行搜索一下。ls可以换成dir
-
激活虚拟环境
Scripts\activate
激活成功后,会看到在命令行前面会多出一些内容。
输入deactivate可以退出虚拟环境。
-
安装Django库
在虚拟环境下输入如下命令,安装Django框架
pip install django
如果速度慢的话,可以换成国内的源
pip install django -i https://pypi.mirrors.ustc.edu.cn/simple/
这样环境就创建好了,接下来创建我们的网站。下面的所有操作都是在虚拟机内完成的。
可以看到会自动生成一个mysite的目录,里面的目录结构如下:
-
工程创建好后,再创建一个应用movie:
python manage.py startapp movie
创建成功后的目录结构如下:
-
应用创建好之后我们要将它添加到这个工程之中,修改settings.py文件
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'movie', # 新加的应用 ]
-
应用添加好之后,还要为这个应用创建一个数据库表,用来保存爬取或者要展示的内容。修改movie目录下的models.py
from django.db import models # Create your models here. class Movie(models.Model): name = models.CharField(max_length=50, verbose_name='电影名') url = models.URLField(verbose_name='电影路径', max_length=200) desc = models.TextField(verbose_name='电影描述') def __str__(self): return self.name class Meta: verbose_name = '电影信息' verbose_name_plural = '电影信息'
为这个应该添加了3个字段,并且定义了它在后台的名称为“电影信息”
-
将这个应用添加到后台,方便之后的管理。修改admin.py
from django.contrib import admin from .models import Movie # Register your models here. admin.site.register(Movie)
完成这些后,还差最后一步,创建数据库和管理员信息。
python manage.py migrate
发现除了我们定义的应用的表,还有很多其他的,这些都是Djnago框架自带的表。暂时不用太在意。
这里输入完命令后,按照提示一步一步的输入就好。
-
启动网站
python manage.py runserver
启动成功后,在浏览器中输入红框中的网址,将看到如下画面。表示这个网站已经创建成功了。
我们进入后台看看,在url后面输入**/admin**看到如下画面:
输入我们刚才创建好的管理员用户和密码:
可以看到这个应用出现在了后台,可以点击右边的add来添加几条数据。
我这里是手动填写的,大家可以通过爬虫获取到数据,自动添加数据。另外这里用的是sqlite数据库。关于这个数据库,大家可以上网查一下用法。不明白的地方欢迎大家进群讨论。
现在数据有了,该如何显示呢?
创建好了文件夹,要将它添加到工程中,并告诉程序这个是保存页面模板的,修改settings.py文件:
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',
],
},
},
]
-
创建业务逻辑,修改movie文件夹下的views.py文件
from django.shortcuts import render from .models import Movie # Create your views here. def Index(request): movie_list = Movie.objects.all() # 查询所有数据 return render(request, 'index.html', {'movie_list':movie_list})
index.html是稍后要创建的html文件,用来显示数据的。
{'movie_list':movie_list}是告诉页面都显示什么数据,这里将获取到的所有电影信息都显示在页面上。
-
告诉项目,我们访问什么路径,来显示电影信息,修改和settings.py同级目录下的urls.py文件
from django.contrib import admin from django.urls import path from movie.views import Index urlpatterns = [ path('admin/', admin.site.urls), path('info/', Index, name='info'), ]
-
在templates文件夹下创建html文件
<html> <head> <title>电影信息</title> </head> <body> <ul> {% for movie in movie_list %} <li> <a href="{{movie.url}}" target="blank">{{movie.name}}</a> </li> {% endfor %} </ul> </body> </html>
这里的{%%}等内容是Django的模板语言,大家可以看看官方文档,这里就不详细说明了。
这样我们的信息就显示在了页面上了。
我们这里只是简单的介绍了一下Django框架的入门用法,如果大家要深入学习的话,可以买一些书来看。或者关注公众号,后续可能会有相关的内容哦。如果有什么疑问,欢迎大家来群里讨论。
感谢大家对本专栏的支持,这是我第一次写专栏内容,有很多不足的方法希望大家见谅。同时也正是因为大家的支持,才能使我坚持把这个专栏完成。
我们的专栏目的是让大家对爬虫有个初步的认识。如果想真正在公司或面试中做到出类拔萃,还需要大家多多练习,同时也希望大家持续关注我们,后续我们还会推出更有意思,更有价值的内容。我们不见不散。