欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

用Python的Django框架来制作一个RSS阅读器

程序员文章站 2022-06-07 14:05:41
...
Django带来了一个高级的聚合生成框架,它使得创建RSS和Atom feeds变得非常容易。

什么是RSS? 什么是Atom?

RSS和Atom都是基于XML的格式,你可以用它来提供有关你站点内容的自动更新的feed。 了解更多关于RSS的可以访问 http://www.whatisrss.com/, 更多Atom的信息可以访问 http://www.atomenabled.org/.

想创建一个联合供稿的源(syndication feed),所需要做的只是写一个简短的python类。 你可以创建任意多的源(feed)。

高级feed生成框架是一个默认绑定到/feeds/的视图,Django使用URL的其它部分(在/feeds/之后的任何东西)来决定输出 哪个feed Django uses the remainder of the URL (everything after /feeds/ ) to determine which feed to return.

要创建一个 sitemap,你只需要写一个 Sitemap 类然后配置你的URLconf指向它。
初始化

为了在您的Django站点中激活syndication feeds, 添加如下的 URLconf:

(r'^feeds/(?P.*)/$', 'django.contrib.syndication.views.feed',
  {'feed_dict': feeds}
),

这一行告诉Django使用RSS框架处理所有的以 "feeds/" 开头的URL. ( 你可以修改 "feeds/" 前缀以满足您自己的要求. )

URLConf里有一行参数: {'feed_dict': feeds},这个参数可以把对应URL需要发布的feed内容传递给 syndication framework

特别的,feed_dict应该是一个映射feed的slug(简短URL标签)到它的Feed类的字典 你可以在URL配置本身里定义feed_dict,这里是一个完整的例子 You can define the feed_dict in the URLconf itself. Here's a full example URLconf:

from django.conf.urls.defaults import *
from mysite.feeds import LatestEntries, LatestEntriesByCategory

feeds = {
  'latest': LatestEntries,
  'categories': LatestEntriesByCategory,
}

urlpatterns = patterns('',
  # ...
  (r'^feeds/(?P.*)/$', 'django.contrib.syndication.views.feed',
    {'feed_dict': feeds}),
  # ...
)

前面的例子注册了两个feed:

  1. LatestEntries``表示的内容将对应到``feeds/latest/ .
  2. LatestEntriesByCategory``的内容将对应到 ``feeds/categories/ .

以上的设定完成之后,接下来需要自己定义 Feed 类

一个 Feed 类是一个简单的python类,用来表示一个syndication feed. 一个feed可能是简单的 (例如一个站点新闻feed,或者最基本的,显示一个blog的最新条目),也可能更加复杂(例如一个显示blog某一类别下所有条目的feed。 这里类别 category 是个变量).

Feed类必须继承django.contrib.syndication.feeds.Feed,它们可以在你的代码树的任何位置
一个简单的Feed

This simple example describes a feed of the latest five blog entries for a given blog:

from django.contrib.syndication.feeds import Feed
from mysite.blog.models import Entry

class LatestEntries(Feed):
  title = "My Blog"
  link = "/archive/"
  description = "The latest news about stuff."

  def items(self):
    return Entry.objects.order_by('-pub_date')[:5]

要注意的重要的事情如下所示:

  • 子类 django.contrib.syndication.feeds.Feed .
  • title , link , 和 description 对应一个标准 RSS 里的 , <link> , 和 <description> 标签.</description>
  • items() 是一个方法,返回一个用以包含在包含在feed的 元素里的 list 虽然例子里用Djangos database API返回的 NewsItem 对象, items() 不一定必须返回 model的实例 Although this example returns Entry objects using Django's database API, items() doesn't have to return model instances.

还有一个步骤,在一个RSS feed里,每个(item)有一个(title),(link)和(description),我们需要告诉框架 把数据放到这些元素中 In an RSS feed, each has a , <link> , and <description> . We need to tell the framework what data to put into those elements.</description>

如果要指定

和 <description> ,可以建立一个Django模板(见Chapter 4)名字叫 feeds/latest_title.html 和 feeds/latest_description.html ,后者是URLConf里为对应feed指定的 slug 。注意 .html 后缀是必须的。 Note that the .html extension is required. <p> RSS系统模板渲染每一个条目,需要给传递2个参数给模板上下文变量:</p> <ol> <li> obj : 当前对象 ( 返回到 items() 任意对象之一 )。</li> <li> site : 一个表示当前站点的 django.models.core.sites.Site 对象。 这对于 {{ site.domain }} 或者 {{ site.name }} 很有用。</li> </ol> <p> 如果你在创建模板的时候,没有指明标题或者描述信息,框架会默认使用 "{{ obj }}" ,对象的字符串表示。 (For model objects, this will be the __unicode__() method.</p> <p> 你也可以通过修改 Feed 类中的两个属性 title_template 和 description_template 来改变这两个模板的名字。</p> <p> 你有两种方法来指定 <link> 的内容。 Django 首先执行 items() 中每一项的 get_absolute_url() 方法。 如果该方法不存在,就会尝试执行 Feed 类中的 item_link() 方法,并将自身作为 item 参数传递进去。</p> <p> get_absolute_url() 和 item_link() 都应该以Python字符串形式返回URL。</p> <p> 对于前面提到的 LatestEntries 例子,我们可以实现一个简单的feed模板。 latest_title.html 包括:</p> <p>{{ obj.title }}</p> <p> 并且 latest_description.html 包含:</p> <p>{{ obj.description }}</p> <p> 这真是 太 简单了!</p> <p><strong>一个更复杂的Feed</strong></p> <p>框架通过参数支持更加复杂的feeds。</p> <p>For example, say your blog offers an RSS feed for every distinct tag you've used to categorize your entries. 如果为每一个单独的区域建立一个 Feed 类就显得很不明智。</p> <p>取而代之的方法是,使用聚合框架来产生一个通用的源,使其可以根据feeds URL返回相应的信息。</p> <p>Your tag-specific feeds could use URLs like this:</p> <p> http://example.com/feeds/tags/python/ : Returns recent entries tagged with python</p> <p> http://example.com/feeds/tags/cats/ : Returns recent entries tagged with cats</p> <p>固定的那一部分是 "beats" (区域)。</p> <p>举个例子会澄清一切。 下面是每个地区特定的feeds:</p> <div class="jb51code"> <pre class="brush:py;"> from django.core.exceptions import ObjectDoesNotExist from mysite.blog.models import Entry, Tag class TagFeed(Feed): def get_object(self, bits): # In case of "/feeds/tags/cats/dogs/mice/", or other such # clutter, check that bits has only one member. if len(bits) != 1: raise ObjectDoesNotExist return Tag.objects.get(tag=bits[0]) def title(self, obj): return "My Blog: Entries tagged with %s" % obj.tag def link(self, obj): return obj.get_absolute_url() def description(self, obj): return "Entries tagged with %s" % obj.tag def items(self, obj): entries = Entry.objects.filter(tags__id__exact=obj.id) return entries.order_by('-pub_date')[:30] </pre> <p>以下是RSS框架的基本算法,我们假设通过URL /rss/beats/0613/ 来访问这个类:</p> <p> 框架获得了URL /rss/beats/0613/ 并且注意到URL中的slug部分后面含有更多的信息。 它将斜杠("/" )作为分隔符,把剩余的字符串分割开作为参数,调用 Feed 类的 get_object() 方法。</p> <p> 在这个例子中,添加的信息是 ['0613'] 。对于 /rss/beats/0613/foo/bar/ 的一个URL请求, 这些信息就是 ['0613', 'foo', 'bar'] 。</p> <p> get_object() 就根据给定的 bits 值来返回区域信息。</p> <p> In this case, it uses the Django database API to retrieve the Tag . Note that get_object() should raise django.core.exceptions.ObjectDoesNotExist if given invalid parameters. 在 Beat.objects.get() 调用中也没有出现 try /except 代码块。 函数在出错时抛出 Beat.DoesNotExist 异常,而 Beat.DoesNotExist 是 ObjectDoesNotExist 异常的一个子类型。</p> <p> 为产生 </p> <title> , <link> , 和 <description> 的feeds, Django使用 title() , link() , 和 description() 方法。 在上面的例子中,它们都是简单的字符串类型的类属性,而这个例子表明,它们既可以是字符串, 也可以是 方法。 对于每一个 title , link 和 description 的组合,Django使用以下的算法: <p> 试图调用一个函数,并且以 get_object() 返回的对象作为参数传递给 obj 参数。</p> <p> 如果没有成功,则不带参数调用一个方法。</p> <p> 还不成功,则使用类属性。</p> <p> 最后,值得注意的是,这个例子中的 items() 使用 obj 参数。 对于 items 的算法就如同上面第一步所描述的那样,首先尝试 items(obj) , 然后是 items() ,最后是 items 类属性(必须是一个列表)。</p> <p>Feed 类所有方法和属性的完整文档,请参考官方的Django文档 (http://www.djangoproject.com/documentation/0.96/syndication_feeds/) 。<br> 指定Feed的类型</p> <p>默认情况下, 聚合框架生成RSS 2.0. 要改变这样的情况, 在 Feed 类中添加一个 feed_type 属性. To change that, add a feed_type attribute to your Feed class:</p> <div class="jb51code"> <pre class="brush:py;"> from django.utils.feedgenerator import Atom1Feed class MyFeed(Feed): feed_type = Atom1Feed </pre> <p>注意你把 feed_type 赋值成一个类对象,而不是类实例。 目前合法的Feed类型如表所示。<br></p> <p><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"alt="用Python的Django框架来制作一个RSS阅读器" src="/default/index/img?u=aHR0cDovL2ZpbGVzLmpiNTEubmV0L2ZpbGVfaW1hZ2VzL2FydGljbGUvMjAxNTA3LzIwMTU3MjIxNTA4NDIxODAuanBnPzIwMTU2MjIxNTg1Nw==" title="用Python的Django框架来制作一个RSS阅读器"></p> <p></p> <p><strong>闭包</strong></p> <p>为了指定闭包(例如,与feed项比方说MP3 feeds相关联的媒体资源信息),使用 item_enclosure_url , item_enclosure_length , 以及 item_enclosure_mime_type ,比如</p> <div class="jb51code"> <pre class="brush:py;"> from myproject.models import Song class MyFeedWithEnclosures(Feed): title = "Example feed with enclosures" link = "/feeds/example-with-enclosures/" def items(self): return Song.objects.all()[:30] def item_enclosure_url(self, item): return item.song_url def item_enclosure_length(self, item): return item.song_length item_enclosure_mime_type = "audio/mpeg" </pre> <p>当然,你首先要创建一个包含有 song_url 和 song_length (比如按照字节计算的长度)域的 Song 对象。<br><strong>语言</strong></p> <p>聚合框架自动创建的Feed包含适当的 <language> 标签(RSS 2.0) 或 xml:lang 属性(Atom). 他直接来自于您的 LANGUAGE_CODE 设置. This comes directly from your LANGUAGE_CODE setting.<br><strong>URLs</strong></language></p> <p>link 方法/属性可以以绝对URL的形式(例如, "/blog/" )或者指定协议和域名的URL的形式返回(例如 "http://www.example.com/blog/" )。如果 link 没有返回域名,聚合框架会根据 SITE_ID 设置,自动的插入当前站点的域信息。 (See Chapter 16 for more on SITE_ID and the sites framework.)</p> <p>Atom feeds需要 <link rel="self"> 指明feeds现在的位置。 The syndication framework populates this automatically.<br><strong>同时发布Atom and RSS</strong></p> <p>一些开发人员想 同时 支持Atom和RSS。 这在Django中很容易实现: 只需创建一个你的 feed 类的子类,然后修改 feed_type ,并且更新URLconf内容。 下面是一个完整的例子: Here's a full example:</p> <div class="jb51code"> <pre class="brush:py;"> from django.contrib.syndication.feeds import Feed from django.utils.feedgenerator import Atom1Feed from mysite.blog.models import Entry class RssLatestEntries(Feed): title = "My Blog" link = "/archive/" description = "The latest news about stuff." def items(self): return Entry.objects.order_by('-pub_date')[:5] class AtomLatestEntries(RssLatestEntries): feed_type = Atom1Feed </pre> <p>这是与之相对应那个的URLconf:</p> <div class="jb51code"> <pre class="brush:py;"> from django.conf.urls.defaults import * from myproject.feeds import RssLatestEntries, AtomLatestEntries feeds = { 'rss': RssLatestEntries, 'atom': AtomLatestEntries, } urlpatterns = patterns('', # ... (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}), # ... ) </url></pre> <a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2suaHRtbD90PTI=" target="_blank" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=aHR0cHM6Ly9pbWcucGhwLmNuL3VwbG9hZC9jb3Vyc2UvMDAwLzAwMC8wNzEvNjIwYzYwNGY3NTI1MTk5NS5wbmc=" style="margin-top: 30px;" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a><p style="float:right;font-size:13px;color:#999;"><span class="red">声明:</span>本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。</p> </div> <p class="article-relative-header">相关文章</p> <p class="article-relative-header">相关视频</p> <hr class="layui-clear"> <ul class="article-relative-ul"> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDg4MDY5Lmh0bWw=" target="_blank" rel="nofollow">一文了解Python中如何使用query()进行优...</a> </li> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtMzQ4ODkxLmh0bWw=" target="_blank" rel="nofollow">python fabric实现远程操作和部署示例</a> </li> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtMzQzMTY3Lmh0bWw=" target="_blank" rel="nofollow">简单谈谈Python中的闭包</a> </li> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtODU1ODMuaHRtbA==" target="_blank" rel="nofollow">在Python中关于中文编码问题的处理建议</a> </li> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtMTU4Mzc5Lmh0bWw=" target="_blank" rel="nofollow">用Python的Django框架来制作一个RSS阅...</a> </li> </ul> <ul class="article-relative-ul"> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvZGUvMzAzLmh0bWw=" target="_blank" title="AJAXRSS" rel="nofollow">AJAXRSS</a> </li> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvZGUvMzQyLmh0bWw=" target="_blank" title="PHP开发基础教程之AJAX RSS Reader" rel="nofollow">PHP开发基础教程之AJAX RSS Reader</a> </li> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvZGUvMzYxLmh0bWw=" target="_blank" title="PHP 实例 - AJAX RSS 阅读器" rel="nofollow">PHP 实例 - AJAX RSS 阅读器</a> </li> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvZGUvNDIyLmh0bWw=" target="_blank" title="PHP AJAX RSS" rel="nofollow">PHP AJAX RSS</a> </li> <li> <span class="layui-badge-dots"></span><a class="relevant" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvZGUvMTQxOC5odG1s" target="_blank" title="AJAX RSS Reader" rel="nofollow">AJAX RSS Reader</a> </li> </ul> </div> <div class="comment layui-clear CopyrightData"> <div class="J_Header" id="J_Header"> <p class="header-title">网友评论</p> <p class="header-protocol">文明上网理性发言,请遵守 新闻评论服务协议</p>我要评论</div> <div class="text-box layui-clear article_comment_textarea"> <div class="box-left"> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuamF2YXNjcmlwdDpsb2dpbl90cmlnZ2VyKCk=" target="_blank" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=L3N0YXRpYy9pbWFnZXMvdXNlcl9hdmF0YXIuanBn" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuamF2YXNjcmlwdDpsb2dpbl90cmlnZ2VyKCk=" target="_blank" rel="nofollow"></a></li> </div> <div class="box-right"> <textarea name="desc" placeholder="请输入内容" class="layui-textarea article_textarea"></textarea><button class="layui-btn article_publish" data-id="158379">立即提交</button> </div> </div> </div> <div class="article-hot layui-clear" style="margin-top:0"> <h2>专题推荐</h2> <ul> <li> <a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL21hcC9kdWd1Lmh0bWw=" target="_blank" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=aHR0cHM6Ly9pbWcucGhwLmNuL3VwbG9hZC9hcnRpY2xlLzAwMC8wMDAvMDAzLzVkMWVmMWU5ZTg2NmU2MzUuanBn" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a><a class="course-title" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL21hcC9kdWd1Lmh0bWw=" target="_blank" rel="nofollow">独孤九贱-php全栈开发教程</a><p class="course-type">全栈 <i class="layui-icon layui-icon-user"></i> 170W+</p> <p class="course-des">主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门</p> </li> <li> <a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL21hcC95dW52Lmh0bWw=" target="_blank" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=aHR0cHM6Ly9pbWcucGhwLmNuL3VwbG9hZC9hcnRpY2xlLzAwMC8wMDAvMDAzLzVkMWVmMjM2Y2E4Nzg5NDkuanBn" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a><a class="course-title" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL21hcC95dW52Lmh0bWw=" target="_blank" rel="nofollow">玉女心经-web前端开发教程</a><p class="course-type">入门 <i class="layui-icon layui-icon-user"></i> 80W+</p> <p class="course-des">主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门</p> </li> <li> <a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3RvdXRpYW8tNDA5MjIxLmh0bWw=" target="_blank" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=aHR0cHM6Ly9pbWcucGhwLmNuL3VwbG9hZC9hcnRpY2xlLzAwMC8wMDAvMDAzLzVkMWVmMjQ3N2M3ZDc1ODcuanBn" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a><a class="course-title" href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3RvdXRpYW8tNDA5MjIxLmh0bWw=" target="_blank" rel="nofollow">天龙八部-实战开发教程</a><p class="course-type">实战 <i class="layui-icon layui-icon-user"></i> 120W+</p> <p class="course-des">主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习</p> </li> </ul> </div> </div> <div class="layui-col-md4 article-list-right "> <div class="panel"> <div class="panel-title">作者信息</div> <div id="profile-2"> <div class="avatar-wrap"><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL21lbWJlci8xLmh0bWw=" target="_blank" class="avatar-link" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=L3N0YXRpYy9pbWFnZXMvdXNlcl9hdmF0YXIuanBn" class="func-um_user gravatar avatar avatar-120 um-avatar um-avatar-uploaded" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a></div> <div class="profile-info"> <p><span class="author-name"></span><i class="layui-icon layui-icon-auz" title="认证作者"></i></p> <p class="author-description">认证0级讲师</p> </div> </div> </div> <div class="layui-clear"><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuamF2YXNjcmlwdDpwdWJsaXNoX2FydGljbGUoKQ==" class="layui-btn layui-btn-danger article-add" target="_blank" rel="nofollow">发布技术文章</a></div> <div class="top-article layui-clear"><div class="layui-tab layui-tab-card"> <ul class="layui-tab-title"> <li class="layui-this">最新文章</li> <li>热门排行</li> </ul> <div class="layui-tab-content"> <div class="layui-tab-item layui-show"><ul> <p class="top-img"><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2suaHRtbD90PTI=" target="_blank" title="线上直播班" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=aHR0cHM6Ly9pbWcucGhwLmNuL3VwbG9hZC9jb3Vyc2UvMDAwLzAwMC8wNzEvNjIwYzY1MTc4NTg5ZDg5NS5wbmc=" style="width: 100%" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a></p> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDg4MDY5Lmh0bWw=" target="_blank" title="一文了解Python中如何使用query()进行优雅的查询" rel="nofollow">一文了解Python中如何使用query()进行优雅的查询</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDgwNTgxLmh0bWw=" target="_blank" title="python基本运算符号有哪些" rel="nofollow">python基本运算符号有哪些</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDgwNTQ1Lmh0bWw=" target="_blank" title="在python中导入哪个库可以进行大数据分析" rel="nofollow">在python中导入哪个库可以进行大数据分析</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDc5OTY3Lmh0bWw=" target="_blank" title="浅谈浮点数运算为什么会产生误差" rel="nofollow">浅谈浮点数运算为什么会产生误差</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDc5ODYyLmh0bWw=" target="_blank" title="pandas怎么读取excel文件" rel="nofollow">pandas怎么读取excel文件</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDc5ODM5Lmh0bWw=" target="_blank" title="一文了解大文件排序/外存排序问题" rel="nofollow">一文了解大文件排序/外存排序问题</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDc5Njc2Lmh0bWw=" target="_blank" title="python如何读取txt文件内容" rel="nofollow">python如何读取txt文件内容</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDc5MTUyLmh0bWw=" target="_blank" title="python的缩进规则是什么" rel="nofollow">python的缩进规则是什么</a></li> </ul></div> <div class="layui-tab-item"><ul> <p class="top-img"><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3RvdXRpYW8tMzg3MDcyLmh0bWw=" target="_blank" title="面对巨额亏损的PHP中文网,我该为情怀买单吗?(猪哥)" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=aHR0cHM6Ly9pbWcucGhwLmNuL3VwbG9hZC9hcnRpY2xlLzAwMC8wMDAvMDAzLzViODkwYTllNDQxN2Y4NzIucG5n" style="width: 100%" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a></p> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDEzNjUzLmh0bWw=" target="_blank" title="python是什么意思" rel="nofollow">python是什么意思</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDE4ODI0Lmh0bWw=" target="_blank" title="大数据专业学习什么内容" rel="nofollow">大数据专业学习什么内容</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDE1NjY5Lmh0bWw=" target="_blank" title="python如何处理excel数据" rel="nofollow">python如何处理excel数据</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDE4NzQ3Lmh0bWw=" target="_blank" title="py文件怎么打开?" rel="nofollow">py文件怎么打开?</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDIzNDUwLmh0bWw=" target="_blank" title="python里面def是什么意思" rel="nofollow">python里面def是什么意思</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDcwNDU5Lmh0bWw=" target="_blank" title="pycharm怎么安装" rel="nofollow">pycharm怎么安装</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDE4OTIyLmh0bWw=" target="_blank" title="python怎么换行输出" rel="nofollow">python怎么换行输出</a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL3B5dGhvbi10dXRvcmlhbHMtNDE5NzkzLmh0bWw=" target="_blank" title="python中eval是什么意思?" rel="nofollow">python中eval是什么意思?</a></li> </ul></div> </div> </div></div> <div class="article-ad article-course php-news-right-imginfo"> <div class="r-title"> <i class="layui-icon layui-icon-praise"></i>推荐视频教程</div> <li> <a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS8xNzkuaHRtbA==" target="_blank" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=aHR0cHM6Ly9pbWcucGhwLmNuL3VwbG9hZC9jb3Vyc2UvMDAwLzAwMC8wMDMvNWExNzk4MmQ0ODY4NjI1NC5qcGc=" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a><span><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS8xNzkuaHRtbA==" target="_blank" rel="nofollow">javascript初级视频教程</a></span> </li> <li> <a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS8xODEuaHRtbA==" target="_blank" rel="nofollow"><img onerror="this.src='/statics/superweb999/images/image_error.jpg'"src="/default/index/img?u=aHR0cHM6Ly9pbWcucGhwLmNuL3VwbG9hZC9jb3Vyc2UvMDAwLzAwMC8wMDMvNWExNzkyODNjMzg4NTcwMy5qcGc=" alt="用Python的Django框架来制作一个RSS阅读器" title="用Python的Django框架来制作一个RSS阅读器"></a><span><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS8xODEuaHRtbA==" target="_blank" rel="nofollow">jquery 基础视频教程</a></span> </li> </div> <div class="article-ad mt-20" id="aritcle_detail_new"> <div class="r-title"> <i class="layui-icon layui-icon-video"></i>视频教程分类</div> <ul class="course-category-lists layui-clear"> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS9saXN0LzI5L3R5cGUvMi5odG1s" target="_blank" rel="nofollow"><div class="course-category-child-first">php视频教程</div></a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS9saXN0LzExLmh0bWw=" target="_blank" rel="nofollow"><div class="course-category-child-first">html视频教程</div></a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS9saXN0LzEyLmh0bWw=" target="_blank" rel="nofollow"><div class="course-category-child-first">css视频教程</div></a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS9saXN0LzE3Lmh0bWw=" target="_blank" rel="nofollow"><div class="course-category-child-first">JS视频教程</div></a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS9saXN0LzE5Lmh0bWw=" target="_blank" rel="nofollow"><div class="course-category-child-first">jQuery视频教程</div></a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS9saXN0LzUxLmh0bWw=" target="_blank" rel="nofollow"><div class="course-category-child-first">mysql视频教程</div></a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS9saXN0LzMzLmh0bWw=" target="_blank" rel="nofollow"><div class="course-category-child-first">Linux视频教程</div></a></li> <li><a href="/default/index/url?u=aHR0cHM6Ly93d3cucGhwLmNuL2NvdXJzZS9saXN0LzMwLmh0bWw=" target="_blank" rel="nofollow"><div class="course-category-child-first">Python视频教程</div></a></li> </ul> </div> </div> </div></description>
相关标签: Django RSS

上一篇: thinkPHP模板和框架简述

下一篇: ie上在excel后内容为空

推荐阅读