欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Python的Django框架中實現(xiàn)Hacker News的一些功能

 更新時間:2015年04月17日 12:06:34   投稿:goldensun  
這篇文章主要介紹了在Python的Django框架中實現(xiàn)Hacker News的一些功能,包括投票“頂”評論等功能,需要的朋友可以參考下

逐步指示

這是提供給更喜歡閱讀的人的視頻文本版本。我們將創(chuàng)建一個類似黑客新聞Reddit的社交新聞網(wǎng)站。它將被稱為“鋼鐵傳聞”,作為一個分享關(guān)于“鋼鐵俠”的有趣傳聞和對其進(jìn)行投票的地方。

屏幕錄像第一部分的概述:

  •     目標(biāo)
  •     虛擬環(huán)境- 從零開始!
  •     模型管理 - 夢想的工作 #78
  •     基本的模板
  •     通用視圖 - 新聞列表視圖和 新聞細(xì)節(jié)視圖
  •     分頁-免費(fèi)!!


設(shè)置虛擬環(huán)境

    我們將用virtualenv virtualenvwrapper來建立一個虛擬開發(fā)環(huán)境。首先請確認(rèn)你已經(jīng)安裝了它們:

    

mkvirtualenv djangorocks

    我在屏幕錄像中使用的是一個叫Xubuntu的變種Ubuntu系統(tǒng)。但你應(yīng)該能夠在其他的操作系統(tǒng)以最小的改變重復(fù)這些步驟。

    安裝 Django (請確認(rèn)你已經(jīng)安裝了pip ):
 

  pip install Django==1.5

    你也可以使用 Django 1.5.1. 這些方法和代碼在最新的 Django 版本中沒有測試過能否工作,所以最好按照本教程使用的版本來學(xué)習(xí)。

創(chuàng)建工程和應(yīng)用

    創(chuàng)建一個名為steelrumors的工程:
 

復(fù)制代碼 代碼如下:

    cd ~/projects
    django-admin.py startproject steelrumors
    cd steelrumors
    chmod +x manage.py

    在你喜愛的編輯器中打開steelrumors/settings.py文件。定位和改變下列內(nèi)容 (改變用粗體顯示):
       

復(fù)制代碼 代碼如下:
'ENGINE': 'django.db.backends.sqlite3'
        'NAME': 'database.db',

        最后 INSTALLED_APPS = ( 'django.contrib.admin',

    接下來,修改steelrumors/urls.py,取消下列行的注釋:
 
    

from django.contrib import admin
  admin.autodiscover()
   
  urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
  )

    同步創(chuàng)建管理對象并進(jìn)入管理詳細(xì)資料:

  

 ./manage.py syncdb

    打開一個新標(biāo)簽或一個新終端并保持服務(wù)器實例在運(yùn)行(不要忘了在這個終端上發(fā)布可工作的djangorocks):
 

  ./manage.py runserver

    訪問管理頁 (一般是 http://127.0.0.1:8000/admin/) 并登錄.

    創(chuàng)建鏈接應(yīng)用:
 

  ./manage.py startapp links

    輸入下面兩個模型類到links/models.py文件中:
 
  

 from django.db import models
  from django.contrib.auth.models import User
   
  class Link(models.Model):
    title = models.CharField("Headline", max_length=100)
    submitter = models.ForeignKey(User)
    submitted_on = models.DateTimeField(auto_now_add=True)
    rank_score = models.FloatField(default=0.0)
    url = models.URLField("URL", max_length=250, blank=True)
    description = models.TextField(blank=True)
   
    def __unicode__(self):
      return self.title
   
  class Vote(models.Model):
    voter = models.ForeignKey(User)
    link = models.ForeignKey(Link)
   
    def __unicode__(self):
      return "%s upvoted %s" % (self.voter.username, self.link.title)

    建立相應(yīng)的管理類。輸入下面內(nèi)容到 links/admin.py 中:
 
   

 from django.contrib import admin
  from .models import Link, Vote
   
  class LinkAdmin(admin.ModelAdmin): pass
  admin.site.register(Link, LinkAdmin)
   
  class VoteAdmin(admin.ModelAdmin): pass
  admin.site.register(Vote, VoteAdmin)

    輸入下面內(nèi)容到links/views.py:
 
  

 from django.views.generic import ListView
  from .models import Link, Vote
   
  class LinkListView(ListView):
    model = Link

  Insert following lines intosteelrumor/urls.py:
 
  from links.views import LinkListView
  ...
  urlpatterns = patterns('',
    url(r'^$', LinkListView.as_view(), name='home'),

    建立一個新的模板文件夾,在steelrumors/templates/links/link_list.html中輸入下面內(nèi)容:
 
    

<ol>
  {% for link in object_list %}
    <li>
    <a href="{{ link.url }}">
     <b>{{ link.title }}</b>
    </a>
    </li>
  {% endfor %}
  </ol>

    編輯settings.py,添加你的兩個應(yīng)用到INSTALLED_APPS = (的尾部:
  

  'links',
  'steelrumors',
  )

    同步建立鏈接對象,并在管理界面里輸入一些數(shù)據(jù):
  
 

  ./manage.py syncdb

 添加品牌

    建立一個通用基本模板steelrumors/templates/base.html:
 
   

 <html>
  <body>
  <h1>Steel Rumors</h1>
   
  {% block content %}
  {% endblock %}
   
  </body>
  </html>

    修改steelrumors/templates/links/link_list.html,用這種方式把原先代碼包裹起來:

    

 
  {% extends "base.html" %}
   
  {% block content %}
  ...
  {% endblock %}

投票數(shù)模型管理器

    我們需要在我們的通用ListView中添加一個計票數(shù)。添加這些到 links/models.py:
 
 

  from django.db.models import Count
   
  class LinkVoteCountManager(models.Manager):
    def get_query_set(self):
      return super(LinkVoteCountManager, self).get_query_set().annotate(
        votes=Count('vote')).order_by('-votes')

  Insert these two lines into the Link class inlinks/models.py:
 
  class Link(models.Model):
  ...
   
    with_votes = LinkVoteCountManager()
    objects = models.Manager() #default manager

    編輯 links/views.py,添加這兩行到LinkListView類中:
   
   

 class LinkListView(ListView):
  ...
   
    queryset = Link.with_votes.all()
    paginate_by = 3

狂歡(作弊)

您可以在django shell中用下面的行給隨機(jī)的標(biāo)題添加100個選票數(shù):
 

$ ./manage.py shell
>>> from links.models import Link
>>> for i in xrange(100): Vote(link=Link.objects.order_by('?')[0],voter=a).save()

最終評論

或許你想知道這個網(wǎng)站的這個版本是否有用,我想說,它作為私人測試版是工作不錯的。任何新用戶都必須通過管理界面手動添加。如果想讓他們登陸管理界面,他們必須是員工。員工可以通過手動創(chuàng)建投票對象來進(jìn)行投票。

站點(diǎn)面向大眾的部分仍能顯示來自員工投票率最高的傳聞?;谌绾卧O(shè)計好的模板的問題,這個版本也可以用來獲取對網(wǎng)站的設(shè)計和品牌的反饋。

總結(jié)完第一部分。想得到隨后部分的更新,請在Twitter上粉我一個@arocks。

相關(guān)文章

  • python和php哪個容易學(xué)

    python和php哪個容易學(xué)

    在本篇文章里小編給大家整理的是一篇關(guān)于python和php哪個學(xué)起來簡單的相關(guān)文章,需要的朋友們可以參考下。
    2020-06-06
  • 詳解Python為什么不用設(shè)計模式

    詳解Python為什么不用設(shè)計模式

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著為什么Python不用設(shè)計模式展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python使用pydub庫對mp3與wav格式進(jìn)行互轉(zhuǎn)的方法

    Python使用pydub庫對mp3與wav格式進(jìn)行互轉(zhuǎn)的方法

    今天小編就為大家分享一篇Python使用pydub庫對mp3與wav格式進(jìn)行互轉(zhuǎn)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python字符串基礎(chǔ)操作詳解

    python字符串基礎(chǔ)操作詳解

    這篇文章主要為大家詳細(xì)介紹了python字符串基礎(chǔ)操作,,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • numpy和tensorflow中的各種乘法(點(diǎn)乘和矩陣乘)

    numpy和tensorflow中的各種乘法(點(diǎn)乘和矩陣乘)

    這篇文章主要介紹了numpy和tensorflow中的各種乘法(點(diǎn)乘和矩陣乘),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 淺談Python處理PDF的方法

    淺談Python處理PDF的方法

    這篇文章主要介紹了Python處理PDF的兩種方法代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • opencv深入淺出了解機(jī)器學(xué)習(xí)和深度學(xué)習(xí)

    opencv深入淺出了解機(jī)器學(xué)習(xí)和深度學(xué)習(xí)

    機(jī)器學(xué)習(xí)是人工智能的核心,專門研究如何讓計算機(jī)模擬和學(xué)習(xí)人類的行為。?深度學(xué)習(xí)是機(jī)器學(xué)習(xí)中的一個熱門研究方向,它主要研究樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次,讓計算機(jī)能夠讓人一樣具有分析與學(xué)習(xí)能力
    2022-03-03
  • python 如何比較字符串是否一樣

    python 如何比較字符串是否一樣

    這篇文章主要介紹了python 如何比較字符串是否一樣的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表定義與用法實例詳解【單鏈表、循環(huán)鏈表】

    Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表定義與用法實例詳解【單鏈表、循環(huán)鏈表】

    這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之鏈表定義與用法,結(jié)合具體實例形式較為詳細(xì)的分析了單鏈表、循環(huán)鏈表等的定義、使用方法與相關(guān)注意事項,需要的朋友可以參考下
    2017-09-09
  • Python3處理HTTP請求的實例

    Python3處理HTTP請求的實例

    今天小編就為大家分享一篇Python3處理HTTP請求的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05

最新評論