本渣渣不专注技术,只专注使用技术,不是一个资深的coder,是一个不折不扣的copier |
这一节,需要规划一下项目结构,后边项目会添加很多东西,不整理一下会很乱
1、集中管理应用
在项目根目录下新建 apps 文件,让项目变得更精致,把 storm 应用和 user 拷贝到内 apps 文件内
现在项目结构
. |-- blog | |-- apps | | |-- storm # 博客应用 | | | |-- migrations # 数据库映射文件 | | | |-- __init__.py # 声明模块,内容默认为空 | | | |-- admin.py # 该应用的后台管理系统 | | | |-- apps.py # 应用配置,Django-1.9以后自动生成 | | | |-- models.py # 数据模块,使用ORM框架 | | | |-- tests.py # 自动化测试的模块 | | | |-- views.py # 项目业务逻辑主要在这里编写 | | |-- user # 用户应用 | | | |-- migrations | | | |-- __init__.py | | | |-- admin.py | | | |-- apps.py | | | |-- models.py | | | |-- tests.py | | | |-- views.py | |-- blog # 项目的容器 | | |-- __init__.py # 声明模块,内容默认为空 | | |-- settings.py # 该 Django 项目的设置/配置。 | | |-- urls.py # 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。 | `-- wsgi.py # 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目 | |-- static # 静态文件 | | |-- css | | |-- fonts | | |-- images | | |-- js | |-- templates # 模板文件 | | |-- about.html | | |-- donate.html | | |-- exchange.html | | |-- index.html | | |-- message.html | | |-- project.html | | |-- question.html | | |-- resources.html | | |-- technique.html | | |-- wp-login.html `-- manage.py
把鼠标放在apps上右击鼠标,选择 Mark Directory as -> Sources Root 点击
在配置文件中配置应用文件路径
blog -> blog -> settings.py
# 添加 apps 目录 sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
个人习惯把 apps 配置文件放在数据库连接配置上边
2、制作基础模板
分析一下催庆才博客页面
生活笔记、技术杂谈、福利专区、文章归档、标签、生活笔记下拉菜单、技术杂谈下拉菜单
这些页面属于同一个页面,只是不同类别展示的文章不同而已
首页和上边的区别就是多了一个轮播图
关于自己、给我留言、赞助作者、属于单个静态页面加上一个评论区
技术交流、提问交流、项目合作、属于单个静态页面
那么初步分析,可以有两个模板
从 图中 可以看出 一区为顶部基础模板,几乎网站的每个页面都要用到
二区 为幻灯片,热门推荐,只有首页有
三区为侧边栏,分类页、标签页、归档页也都有用到
四区就是内容展示区了,分类页、标签页、详情页都有用到
综上,用到的地方多的是 一区、三区、四区
四区基本都是伴随一区、三区出现的,也即四区继承一区或者三区
所以,需要两个基础模板,就是 一个是一区,一个是一区结合三区
分析完毕
头部一区称作 base.html、一区加侧边栏三区称作 base_right.html
base_right.html 继承 base.html
base.html
{% load staticfiles %} <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <meta name="baidu-tc-verification" content="0fb041a64ee71333c957d8c784961cc8" /> <meta property="qc:admins" content="145637425211673116375" /> <meta http-equiv="X-UA-Compatible" content="IE=10,IE=9,IE=8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0"> <title>{% block title %}{% endblock title %}</title> <script> window._deel = {name: '静觅',url: 'https://cuiqingcai.com/wp-content/themes/Yusi', ajaxpager: 'on', commenton: 0, roll: [11,12]} </script> <!-- All in One SEO Pack 2.3.12.2.1 by Michael Torbert of Semper Fi Web Design[392,409] --> <meta name="description" content="崔庆才的个人网站,记录生活的瞬间,分享学习的心得,感悟生活,留住感动,静静寻觅生活的美好" /> <meta name="keywords" content="崔庆才,静觅,网络,IT,技术,博客,PHP" /> <link rel='next' href='https://cuiqingcai.com/page/2' /> <!-- /all in one seo pack --> <link rel='dns-prefetch' href='//libs.baidu.com' /> <link rel='dns-prefetch' href='//s.w.org' /> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.4\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/2.4\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/cuiqingcai.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.9.6"}}; !function(a,b,c){function d(a,b){var c=String.fromCharCode;l.clearRect(0,0,k.width,k.height),l.fillText(c.apply(this,a),0,0);var d=k.toDataURL();l.clearRect(0,0,k.width,k.height),l.fillText(c.apply(this,b),0,0);var e=k.toDataURL();return d===e}function e(a){var b;if(!l||!l.fillText)return!1;switch(l.textBaseline="top",l.font="600 32px Arial",a){case"flag":return!(b=d([55356,56826,55356,56819],[55356,56826,8203,55356,56819]))&&(b=d([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]),!b);case"emoji":return b=d([55357,56692,8205,9792,65039],[55357,56692,8203,9792,65039]),!b}return!1}function f(a){var c=b.createElement("script");c.src=a,c.defer=c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var g,h,i,j,k=b.createElement("canvas"),l=k.getContext&&k.getContext("2d");for(j=Array("flag","emoji"),c.supports={everything:!0,everythingExceptFlag:!0},i=0;i<j.length;i++)c.supports[j[i]]=e(j[i]),c.supports.everything=c.supports.everything&&c.supports[j[i]],"flag"!==j[i]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[j[i]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(h=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",h,!1),a.addEventListener("load",h,!1)):(a.attachEvent("onload",h),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),g=c.source||{},g.concatemoji?f(g.concatemoji):g.wpemoji&&g.twemoji&&(f(g.twemoji),f(g.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='crayon-css' href='/static/css/crayon.min.css' type='text/css' media='all' /> <link rel='stylesheet' id='crayon-theme-github-css' href='/static/css/github.css' type='text/css' media='all' /> <link rel='stylesheet' id='crayon-font-monaco-css' href='/static/css/monaco.css' type='text/css' media='all' /> <link rel='stylesheet' id='page-list-style-css' href='/static/css/page-list.css' type='text/css' media='all' /> <link rel='stylesheet' id='l2h_style-css' href='/static/css/latex.min.css' type='text/css' media='screen, print' /> <link rel='stylesheet' id='l2h_print_style-css' href='/static/css/print.min.css' type='text/css' media='print' /> <link rel='stylesheet' id='style-css' href='/static/css/style.css' type='text/css' media='all' /> <script type='text/javascript' src='/static/js/jquery.min.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var CrayonSyntaxSettings = {"version":"_2.7.2_beta","is_admin":"0","ajaxurl":"https:\/\/cuiqingcai.com\/wp-admin\/admin-ajax.php","prefix":"crayon-","setting":"crayon-setting","selected":"crayon-setting-selected","changed":"crayon-setting-changed","special":"crayon-setting-special","orig_value":"data-orig-value","debug":""}; var CrayonSyntaxStrings = {"copy":"\u4f7f\u7528 %s \u590d\u5236\uff0c\u4f7f\u7528 %s \u7c98\u8d34\u3002","minimize":"\u70b9\u51fb\u5c55\u5f00\u4ee3\u7801"}; /* ]]> */ </script> <script type='text/javascript' src='/static/js/crayon.min.js'></script> <script type='text/javascript' src='/static/js/jquery.fitvids.js'></script> <link rel='https://api.w.org/' href='https://cuiqingcai.com/wp-json/' /> <style> .latex_thm, .latex_lem, .latex_cor, .latex_defn, .latex_prop, .latex_rem{ margin:0;padding:5px; background: lightcyan; border: solid 3px green; -moz-border-radius: 1.0em; -webkit-border-radius: 7px; box-shadow: 0 0 0 green; } .latex_em{ font-style: italic; } .bibtex_title{ font-weight:bold; color: #004b33; } a.bibtex_title{ text-decoration: none; } </style> <meta name="keywords" content="崔庆才,静觅,爬虫,Python,C,Java,PHP,HTML,JS,教程"> <meta name="description" content="崔庆才的个人主页"> <script type="text/javascript"> jQuery(document).ready( function() { jQuery('.video').fitVids(); }); </script><!--[if lt IE 9]><script src="/static/js/html5.js"></script><![endif]--> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?3ef185224776ec2561c9f7066ead4f24"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <meta name="360-site-verification" content="bdc579accc68a98f1258ebcce2266afa" /> <script type="text/javascript" name="baidu-tc-cerfication" data-appid="5411405" src="/static/js/lightapp.js"></script> <link rel="shortcut icon" type="image/x-icon" href="https://cuiqingcai.com/fav.png" /> <script type="text/javascript" src="/static/js/main.js"></script> <script type="text/javascript"> </script> </head> <body class="home blog"> <header id="header" class="header"> <div class="container-inner"> <div class="yusi-logo"> <a href="/"> <h1> <span class="yusi-mono">静觅</span> <span class="yusi-bloger">崔庆才的个人博客</span> </h1> </a> </div> </div> <div id="nav-header" class="navbar"> <ul class="nav"> <li id="menu-item-44" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home menu-item-44"><a href="https://cuiqingcai.com">首页</a></li> <li id="menu-item-14" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-14"> <a href="https://cuiqingcai.com/category/life">生活笔记</a> <ul class="sub-menu"> <li id="menu-item-19" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-19"><a href="https://cuiqingcai.com/category/life/notes">个人随笔</a></li> </ul> </li> <li id="menu-item-7" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-7"> <a href="https://cuiqingcai.com/category/technique">技术杂谈</a> <ul class="sub-menu"> <li id="menu-item-9" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-9"><a href="https://cuiqingcai.com/category/technique/cc">C/C++</a></li> </ul> </li> <li id="menu-item-418" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-418"><a href="https://cuiqingcai.com/category/resources">福利专区</a></li> <li id="menu-item-851" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-851"><a href="https://cuiqingcai.com/about">关于自己</a></li> <li id="menu-item-251" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-251"><a href="https://cuiqingcai.com/message">给我留言</a></li> <li id="menu-item-1131" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1131"><a href="https://cuiqingcai.com/donate">赞助作者</a></li> <li id="menu-item-4571" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-4571"><a href="https://cuiqingcai.com/exchange">技术交流</a></li> <li id="menu-item-6142" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6142"><a href="https://cuiqingcai.com/question">提问交流</a></li> <li id="menu-item-6397" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-6397"><a href="https://cuiqingcai.com/project">项目合作</a></li> <li style="float:right;"> <div class="toggle-search"><i class="fa fa-search"></i></div> <div class="search-expand" style="display: none;"> <div class="search-expand-inner"> <form method="get" class="searchform themeform" onsubmit="location.href='https://cuiqingcai.com/?s=' + encodeURIComponent(this.s.value).replace(/%20/g, '+'); return false;" action="/"> <div> <input type="ext" class="search" name="s" onblur="if(this.value=='')this.value='search...';" onfocus="if(this.value=='search...')this.value='';" value="search..."> </div> </form> </div> </div> </li> </ul> </div> </header> <section class="container"> <div class="speedbar"> <div class="pull-right"> <i class="fa fa-user"></i><a href="/wp-login.php?action=register">投稿</a> <i class="fa fa-power-off"></i><a href="https://cuiqingcai.com/wp-login.php">登录</a> </div> <div class="toptip"><strong class="text-success"><i class="fa fa-volume-up"></i> </strong> 《Python3网络爬虫开发实战》赠书活动正在进行中!详情请戳<a href="https://cuiqingcai.com/6173.html">赠书活动</a>!欢迎参与!非常感谢!</div> </div> <!--右侧内容区--> {% block body %}{% endblock body %} <!--左侧内容区结束--> <!--右侧信息标签广告区--> {% block right %}{% endblock %} </section> <footer class="footer"> <div class="footer-inner"> <div class="copyright pull-left"> <a href="https://cuiqingcai.com " title="静觅">静觅</a> 版权所有丨采用<a href="http://yusi123.com/"> 欲思 </a>主题丨基于<a href="http://cn.wordpress.org/" title="WordPress"> WordPress </a>构建 © 2018丨托管于 <a rel="nofollow" target="_blank" href="https://cloud.tencent.com/">腾讯云主机</a> & <a rel="nofollow" target="_blank" href="https://www.qiniu.com/">七牛云存储 </a>丨京ICP备18015597号-1 <div> <script type="text/javascript">var cnzz_protocol = (("https:" == document.location.protocol) ? " https://" : " http://");document.write(unescape("%3Cspan id='cnzz_stat_icon_1253486800'%3E%3C/span%3E%3Cscript src='" + cnzz_protocol + "s4.cnzz.com/z_stat.php%3Fid%3D1253486800%26online%3D1%26show%3Dline' type='text/javascript'%3E%3C/script%3E"));</script> </div> </div> </div> </footer> <link rel='stylesheet' id='metaslider-nivo-slider-css' href='../static/css/nivo-slider.css' type='text/css' media='all' property='stylesheet' /> <link rel='stylesheet' id='metaslider-public-css' href='../static/css/public.css' type='text/css' media='all' property='stylesheet' /> <link rel='stylesheet' id='metaslider-nivo-slider-bar-css' href='../static/css/bar.css' type='text/css' media='all' property='stylesheet' /> <script type='text/javascript' src='../static/js/jquery.js'></script> <script type='text/javascript' src='../static/js/wp-embed.min.js'></script> <script type='text/javascript' src='../static/js/jquery.nivo.slider.pack.js'></script> <!-- xuanfu --> <script type="text/javascript"> /*300*25 创建于 2015-02-23*/ var cpro_id = "u1959047"; </script> <script src="../static/js/s.js" type="text/javascript"></script><script type="text/javascript"> var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F3ef185224776ec2561c9f7066ead4f24' type='text/javascript'%3E%3C/script%3E")); </script> <script> setTimeout(function(){ $('#cpv6_left_lower,#cpv6_right_lower').css({ 'width': 0 }); }, 500); </script> <script type="text/javascript"> $(document).ready(function(){ var imgs = new Array(); imgs[0] = 'http://qiniu.cuiqingcai.com/wp-content/uploads/2015/05/20150525111154.jpg'; imgs[1] = 'http://qiniu.cuiqingcai.com/wp-content/uploads/2015/05/20150525111447.jpg'; imgs[2] = 'http://qiniu.cuiqingcai.com/wp-content/uploads/2015/05/20150525112058.jpg'; imgs[3] = 'http://qiniu.cuiqingcai.com/wp-content/uploads/2015/05/20150525112112.jpg'; imgs[4] = 'http://qiniu.cuiqingcai.com/wp-content/uploads/2015/05/20150525112129.jpg'; imgs[5] = 'http://qiniu.cuiqingcai.com/wp-content/uploads/2015/05/20150525112155.jpg'; $('.ds-avatar img[src*="cdncache"], .ds-avatar img[src*="avatar-50"]').each(function(){ var rand = Math.floor(Math.random()*imgs.length); $(this).attr("src",imgs[rand]); }) }); </script> </body> </html> <!-- Dynamic page generated in 1.148 seconds. --> <!-- Cached page generated by WP-Super-Cache on 2019-02-18 20:33:39 --> <!-- super cache -->
base_right.html
{% extends 'base.html' %} {% load staticfiles %} {% block right %} <aside class="sidebar"> <div class="widget widget_text"> <div class="textwidget"> <div class="social"> <a href="https://weibo.com/cuiqingcai" rel="external nofollow" title="新浪微博" target="_blank"><i class="sinaweibo fa fa-weibo"></i></a> <a href="http://t.qq.com/CQCcqc123456?preview" rel="external nofollow" title="腾讯微博" target="_blank"><i class="tencentweibo fa fa-tencent-weibo"></i></a> <a class="weixin"><i class="weixins fa fa-weixin"></i> <div class="weixin-popover"> <div class="popover bottom in"> <div class="arrow"></div> <div class="popover-title"></div> <div class="popover-content"><img src="../static/images/weixin.gif" ></div> </div> </div> </a> <a href="http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=cqc@cuiqingcai.com" rel="external nofollow" title="Email" target="_blank"><i class="email fa fa-envelope-o"></i></a><a href="?feed=rss2" rel="external nofollow" target="_blank" title="订阅本站"><i class="rss fa fa-rss"></i></a> </div> </div> </div> <div class="widget widget_metaslider_widget"> <div class="title"><h2>热门专题</h2></div><!-- meta slider --> <div style="width: 100%;" class="metaslider metaslider-nivo metaslider-2698 ml-slider meta-slider"> <div id="metaslider_container_2698"> <div class='slider-wrapper theme-bar'> <div class='ribbon'></div> <div id='metaslider_2698' class='nivoSlider'> <a href="https://cuiqingcai.com/1052.html" target="_blank"><img src="/static/images/wallpaper_5263464.jpg" height="300" width="320" data-title="Python爬虫学习系列教程" title="Python爬虫学习系列教程" alt="Python爬虫学习系列教程" class="slider-2698 slide-1720" /></a> </div> </div> </div> <script type="text/javascript"> var metaslider_2698 = function($) { $('#metaslider_2698').nivoSlider({ boxCols:7, boxRows:5, pauseTime:3000, effect:"random", controlNav:false, directionNav:true, pauseOnHover:true, animSpeed:600, prevText:"<", nextText:">", slices:15, manualAdvance:false }); }; var timer_metaslider_2698 = function() { var slider = !window.jQuery ? window.setTimeout(timer_metaslider_2698, 100) : !jQuery.isReady ? window.setTimeout(timer_metaslider_2698, 1) : metaslider_2698(window.jQuery); }; timer_metaslider_2698(); </script> </div> </div> <!--// meta slider--> <div class="widget widget_text"> <div class="textwidget"><p><a href="https://1024dada.com/?channel=cuiqingcai&hmsr=%E5%B4%94%E5%BA%86%E6%89%8D&hmpl=&hmcu=&hmkw=&hmci="><img style="width: 100%;" src="/static/images/timͼƭ20181112165556.jpg" /><br /> </a></p></div> </div> <div class="widget widget_text"> <div class="textwidget"> <a href="https://developer.huaweicloud.com/campus?utm_source=cuiqingcai&utm_medium=blog&utm_campaign=campus"><img style="width:100%" src="/static/images/云服务器学生优惠套餐9元月.jpg"/></a> </div> </div> <div class="widget widget_archive"> <div class="title"><h2>文章归档</h2></div> <ul> <li><a href='https://cuiqingcai.com/date/2019/01'>2019年一月</a></li> </ul> </div> <div class="widget d_postlist"> <div class="title"><h2>猜你喜欢</h2></div> <ul> <li><a href="https://cuiqingcai.com/1076.html" title="Python爬虫实战五之模拟登录淘宝并获取所有订单" ><span class="thumbnail"><img src="../static/images/timthumb.php" alt="Python爬虫实战五之模拟登录淘宝并获取所有订单" /></span><span class="text">Python爬虫实战五之模拟登录淘宝并获取所有订单</span><span class="muted">2015-02-24</span><span class="muted">8,059评论</span></a></li> </ul> </div> <div class="widget d_tag"> <div class="title"><h2>标签云</h2></div> <div class="d_tags"> <a title="153个话题" href="https://cuiqingcai.com/tag/python">Python (153)</a> </div> </div> <div class="widget widget_links"> <div class="title"><h2>友情链接</h2></div> <ul class='xoxo blogroll'> <li><a href="http://www.99banzou.com" target="_blank">99伴奏网</a></li> </ul> </div> <div class="widget widget_text"> <div class="title"><h2>精品推荐</h2></div> <div class="textwidget"> <div class="side-ad"> <script type="text/javascript"> var cpro_id="u2578794"; (window["cproStyleApi"] = window["cproStyleApi"] || {})[cpro_id]={at:"3",rsi0:"300",rsi1:"250",pat:"17",tn:"baiduCustNativeAD",rss1:"#FFFFFF",conBW:"1",adp:"1",ptt:"0",titFF:"%E5%BE%AE%E8%BD%AF%E9%9B%85%E9%BB%91",titFS:"14",rss2:"#00a67c",titSU:"0"} </script> <script src="../static/js/c.js" type="text/javascript"></script> </div> <style> #BAIDU_SSP__wrapper_u2578794_1 { display:none; } #BAIDU_SSP__wrapper_u2578794_0 #iframeu2578794_0 .bd-logo2 { display:none !important; } </style> </div> </div> <div class="widget widget_text"> <div class="title"><h2>新浪微博</h2></div> <div class="textwidget"> <iframe width="100%" class="share_self" frameborder="0" scrolling="no" src="https://widget.weibo.com/weiboshow/index.php?language=&width=0&height=550&fansRow=2&ptype=1&speed=0&skin=1&isTitle=0&noborder=0&isWeibo=1&isFans=1&uid=2830678474&verifier=7468dc7b&dpc=1"> </iframe> </div> </div> <div class="widget widget_text"> <div class="textwidget"> <a href="https://edu.hellobi.com/course/157" style="display:none"><img src="../static/images/wx20180104-140302.png"/></a> </div> </div> </aside> {% endblock %}
index.html 改写为如下,是不是代码清秀的多了
{%extends 'base_right.html'%} {% load static %} {% block title %}静觅 | StormSha的个人网站{% endblock title %} {% block body%} <div class="content-wrap"> <div class="content"> <div id="wowslider-container1"> <div class="ws_images"> <ul> <li> <a target="_blank" href="https://cuiqingcai.com/5052.html" title="Python3网络爬虫开发实战教程"> <img src="/static/images/python-3网格爬虫开发实战-宣传图.jpg" title="Python3网络爬虫开发实战教程" alt="Python3网络爬虫开发实战教程" /> </a> </li> </ul> </div> <div class="ws_thumbs"> <div> <a target="_blank" href="#" title="Python3网络爬虫开发实战教程"> <img src="/static/images/timthumb.php" /></a> </div> </div> <div class="ws_shadow"></div> </div> <script type="text/javascript" src="/static/js/slider.js"></script> <div> <div class="left-ad" style="clear: both;background-color: #fff; width: 30%;float: left;margin-right:2%;"></div> <div class="hot-posts"> <h2 class="title">热门排行</h2> <ul> <li> <p> <span class="muted"> <a href="javascript:;" data-action="ding" data-id="1052" id="Addlike" class="action"> <i class="fa fa-heart-o"></i> <span class="count">30735</span> 喜欢</a> </span> </p> <span class="label label-1">1</span> <a href="https://cuiqingcai.com/1052.html" title="Python2爬虫学习系列教程">Python2爬虫学习系列教程</a></li> </ul> </div> </div> <article class="excerpt"> <header> <a class="label label-important" href="https://cuiqingcai.com/category/technique/python">Python<i class="label-arrow"></i></a> <h2> <a target="_blank" href="https://cuiqingcai.com/6408.html" title="第一次见到这种反爬虫。咋办?盘它。">第一次见到这种反爬虫。咋办?盘它。 </a> </h2> </header> <div class="focus"> <a target="_blank" href="https://cuiqingcai.com/6408.html"> <img class="thumb" src="/static/images/timthumb.php" alt="第一次见到这种反爬虫。咋办?盘它。" /></a> </div> <span class="note"> 大家好,我是四毛,欢迎大家关注我的公众号。 今天在工作中,碰到了第一次碰见的反爬虫机制,感觉很有意思,在这里记录一下,希望对大家有帮助。 今天用到的库: requests [请求] lzstring [解压数据] pyexecjs [执行JS] 简...</span> <p class="auth-span"> <span class="muted"><i class="fa fa-user"></i> <a href="https://cuiqingcai.com/author/simon">四毛</a></span> <span class="muted"><i class="fa fa-clock-o"></i> 3周前 (01-26)</span> <span class="muted"><i class="fa fa-eye"></i> 3307浏览</span> <span class="muted"><i class="fa fa-comments-o"></i> <a target="_blank" href="https://cuiqingcai.com/6408.html#comments">152评论</a></span> <span class="muted"><a href="javascript:;" data-action="ding" data-id="6408" id="Addlike" class="action"><i class="fa fa-heart-o"></i> <span class="count">19</span>喜欢</a></span> </p> </article> </div> </div> {%endblock body%}
推荐阅读:Django模板继承
2、运行效果
这里改的代码虽然不多,但是改动的文件有点多,在对 Django 项目结构不太熟悉的到情况下,很容易出错,如果出错了请耐心分析,慢慢学会根据报错解决问题,程序员的耐心就体现在对抗bug上,无论你报多少种错,仍然不慌不忙,慢慢一一排除
转载请注明: StormSha » Django个人博客开发九 | 整理项目结构