python Django网页开发实战(1)

您所在的位置:网站首页 django网站模板 python Django网页开发实战(1)

python Django网页开发实战(1)

2023-03-14 10:04| 来源: 网络整理| 查看: 265

最近一直在学习Django网页开发的内容,今天用Django简单的做一个电影页面网页,初步结果见图,总共分为三个步骤,数据获取(爬虫)、网页界面设计(html)、网页开发(Django),下面就一步一步来详细的讲解。

1、数据获取

使用爬虫从豆瓣电影网站上获取所需要用到电影资源,不会爬虫的小伙伴可以参考之前更新的爬虫实战专栏,由于最后要将爬取到的数据显示在网页上,这就需要一个中间数据库进行存放,这里将爬取到的数据直接存到Mysql数据库中,具体见下面代码。

1.1连接数据库,并创建数据表

爬取到的数据分为四个字段——电影名称、封面、电影描述、播放地址

import requests import csv from lxml import etree import pymysql import json import re class ConnMysql(): def __init__(self): # 连接数据库 self.db = pymysql.connect(host='localhost', port=3306, database='douban',#数据库名称 user='root', password='******',#数据库密码 charset='utf8') self.cursor = self.db.cursor() self.cursor.execute("DROP TABLE IF EXISTS movie") sql = ''' create table movie ( name Char(255), cover CHAR (255), disc TEXT (2555), address char (255)); ''' self.cursor.execute(sql) print('连接成功') def insert(self,dict1): # 将数据添加到数据库中的movie表中 sql = "insert into movie (name,cover,disc,address) values(%s,%s,%s,%s)" data = [dict1['name'],dict1['cover'],dict1['disc'],dict1['address']] try: self.cursor.execute(sql,data) self.db.commit() # 提交操作 except: self.db.rollback()

1.2 爬取数据

将爬取到的数据存入数据库

class Douban(): def __init__(self): self.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',} self.num=1000#爬取1000个数据,够我们用啦 self.url = 'https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=%E7%94%B5%E5%BD%B1&start={}' self.douban_movie() def douban_movie(self): for page in range(0,self.num,20): print('开始第%s页'%page) self.get_url=self.url.format(str(page)) self.r=requests.get(url=self.get_url, headers=self.headers) self.r.encoding='utf-8' self.json_text=json.loads(self.r.text) self.parse_text() def parse_text(self): for moive_list in self.json_text['data']: # print(type(moive_list)) self.moive_name=moive_list['title'] self.movie_url=moive_list['url'] self.movie_cover=moive_list['cover'] self.parse_content() self.item={ 'name':self.moive_name, 'cover':self.movie_cover, 'disc':self.disc, 'address':self.movie_url, } self.save_data() def parse_content(self): self.r_disc = requests.get(url=self.movie_url, headers=self.headers) tree = etree.HTML(self.r_disc.text) self.disc = tree.xpath('//div[@id="link-report"]/span/text()') # /H4/a/@href' self.disc=re.sub(r'[\]\\n ( \,)\\u3000\[\']','',str(self.disc)) def save_data(self): database.insert(self.item) if __name__ == '__main__': database = ConnMysql() movie = Douban()

1.3打开Navicat Premium,连接数据库,可以看到在总的数据库中有douban数据库,其下面有movie列表,打开之后可以发现爬取到的数据已经全部存入到数据库中了。

当然,你也可以不直接存数据库中,向之前学习爬虫一样存入csv文件中,最后通过数据库进行导入(右键数据库-导入导向,根据提示一步一步导入)

2、网页页面设计

这个由于没学过HTML,所以就直接百度一个html模板,然后稍加修改,大家可以自行百度自己比较喜欢的网页模板。

Title /*解决页面浮动后的塌陷问题*/ .clearfix{ zoom:1; } .clearfix:after{ content: ''; display: block; visibility: hidden; line-height: 0; clear:both; } body,div{ margin: 0 auto; } div{ border: 1px solid gray; width: 750px; text-align:center; } ul{ list-style-type: none; display: inline-block; } #header li{ float:left; margin-left: 10px; font-size: 16px; font-family: '微软雅黑'; color:#666666 } #header li:hover{ cursor:pointer; background: blue; color:white; } #content li{ float:left; display: inline; margin-right: 15px; text-align: center; height: 120px; width: 120px; overflow: hidden; padding-top:10px; padding-bottom: 5px; } #content h1{ font-size:14px; margin:0; } .tip{ display: block; font-size: 12px; } .h1,.tip{ width:110px; text-align: center; } #content ul{ margin:0; margin-left: 55px; padding:0; } 首页 电影 电视剧 动漫 综艺 音乐 MV 视频 短片 公开课 {% for movie in movies %} {{ movie.name }} {{ movie.disc }} {% endfor %} 上一页 下一页

3、Django网页开发

有了数据和网页模板,下面就可以直接用Django开发了,在pycharm中可以直接创建django文件。名称自行命名

创建好的文件列表如下图所示,将网页模板放到templates文件下,后续所有的网页显示的都放入这个文件夹下

接着在pycharm终端中输入Python manage.py startapp movieshow,用以创建app,后面网页上的操作在这个文件夹下进行

创建完成之后在settings中将刚创建的app写入最后一行,同时在settings里进行数据库的连接

做完这些之后,进行主url访问设置,这里是你想最后在网址栏输入啥名称就在路径一栏写啥,这里写入movie/,注意加斜杠;

from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('movie/',include('movieshow.urls')) ]

设置完主url之后,在app中urls中进行子url设置,没有这个py文件的,右键新建一个,命名为urls

from django.urls import path from . import views urlpatterns = [ path('',views.index_view), ]

接着进行数据库映射

在终端中输入,将数据库中的字段映射到models中

D:\pythonstudy\django\movie>python manage.py inspectdb>movieshow/models.py

映射完成之后,可以发现在models中有字段的一些信息

class Movie(models.Model): name = models.CharField(max_length=255, blank=True, primary_key=True) cover = models.CharField(max_length=255, blank=True, null=True) disc = models.TextField(blank=True, null=True) address = models.CharField(max_length=255, blank=True, null=True) class Meta: managed = False db_table = 'movie'

完成以上操作之后,就可以在views中进行相关网页的显示与操作了

def page(num,size=20): num=int(num) #总记录数 total=Movie.objects.count() totalpage=int(math.ceil(total*1.0/size)) #是否越界 if numtotalpage: num=totalpage #每页显示记录 movies=Movie.objects.all()[((num-1)*size):(num*size)] # print(movies) return movies,num def index_view(request): #接收前端请求参数 num=request.GET.get('num',1) #处理分页 movies,n=page(num) print(movies) #查询所有数据 # movies=Movie.objects.all() #上一页 pre_page_num=n-1 next_page_num=n+1 return render(request,'index01.html',{'movies':movies,'pre_page_num':pre_page_num,'next_page_num':next_page_num}) # return None

最后点击运行,在下面出现下面,说明连接启动,在网页中写入url网址进行显示

点击下一页可显示下页的内容

至此结束,讲的比较粗糙,但思路应该比较清晰,先干啥后干啥,有啥不明白的欢迎留言和评论。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3