1. 程式人生 > >django搭建個人部落格11,專案釋出展示

django搭建個人部落格11,專案釋出展示

編寫專案展示頁

1.這是專案的資料模型

class tb_projs(models.Model):
    projID=models.AutoField(primary_key=True,verbose_name="作品ID")
    title=models.CharField(max_length=24,db_index=True,verbose_name="作品名")
    abstract=models.CharField(max_length=140,verbose_name="作品簡介")
    uploaded=models.DateTimeField(verbose_name="作品釋出時間"
) imgsURL=models.URLField(verbose_name="作品圖集") gitURL=models.URLField(verbose_name="作品GitHubURL")

2.功能需求

  1.imgsURL是作品圖集static/www/projImgs
  2.該頁面提供一個相簿效果,相片是各個專案的照片之一,下面是名字。
  3.相片的URL根據imgsURL和img的Id及照片編號來構造,例如…/projImgs/Id_1.jpg。
  4.每個專案提供5張照片,首頁編號為1。
  5.專案名字的URL跳轉到專案的github地址上去。專案圖片跳轉到圖冊,裡面有專案的5張照片圖冊和簡介及名字。
  6.上傳的照片會被按順序重新命名,eg:1_1.jpg,1_5.jpg,2_1.jpg…然後傳入指定資料夾。

3.大致思路

 1.專案釋出頁

  1.共4項要填寫,專案名稱,專案簡介,上傳圖片,gitURL。上傳圖片我打算用django的ImageField,並且不打算使用批量上傳外掛,所以得在表單裡建立5個圖片上傳項。

class ProjForm(forms.Form):
  title=forms.CharField()
  abstract=forms.CharField(max_length=140)
  gitURL=forms.URLField()
  img1=forms.ImageField()
  img2=forms.ImageField()
  img3=forms.ImageField
() img4=forms.ImageField() img5=forms.ImageField()

  2.在表單頁填好資訊,傳遞給View層,View裡呼叫form_valid,函式裡實現裡構造好tb_projs物件,儲存物件,儲存圖片。在官方手冊查閱了File類實現檔案儲存後,寫出如下程式碼

class ProjPublishView(FormView):
    template_name="www/proj_publish_base.html"
    form_class=ProjForm
    absolute_path='/virEnv/mysite/www/static/'
    def form_valid(self,form):
        if form.is_valid():
            data=form.cleaned_data
            title=data['title']
            abstract=data['abstract']
            uploaded=datetime.datetime.now()
            gitURL=data['gitURL']
            imgsURL=www/projImgs'
            proj=tb_projs(title=title,abstract=abstract,uploaded=uploaded,imgsURL=imgsURL,gitURL=gitURL)
            proj.save()
            img1_path=self.absolute_path+imgsURL+'/'+str(proj.projID)+'_1.jpg'
            self.handle_uploaded_img(self.request.FILES['img1'],img1_path)
            img2_path=self.absolute_path+imgsURL+'/'+str(proj.111
            111projID)+'_2.jpg'
            self.handle_uploaded_img(self.request.FILES['img2'],img2_path)
            img3_path=self.absolute_path+imgsURL+'/'+str(proj.projID)+'_3.jpg'
            self.handle_uploaded_img(self.request.FILES['img3'],img3_path)
            img4_path=self.absolute_path+imgsURL+'/'+str(proj.projID)+'_4.jpg'
            self.handle_uploaded_img(self.request.FILES['img4'],img4_path)
            img5_path=self.absolute_path+imgsURL+'/'+str(proj.projID)+'_5.jpg'
            self.handle_uploaded_img(self.request.FILES['img5'],img5_path)
        return super(ProjPublishView,self).form_valid(form)

    def handle_uploaded_img(self,f,path):
        with open(path,'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)

    def get_success_url(self):
        #success_url=reverse('www:projList',kwargs={'page':1})
        success_url=reverse('www:indexView')
        return success_url

 2.驗證結果

  1.上傳頁面
上傳頁面
  2.資料庫檢視
資料庫檢視
  3.資料夾下檢視檔案
檢視上傳結果

 3.專案展示頁

  1.專案展示頁使用的是ListView,繫結的model是tb_projs.預設返回context就是全部的tb_projs.objects
  2.效果如下
專案列表
  3.編寫html模板時使用了get_static_prefix以及divisibleby

<img src="{% get_static_prefix %}{{o.imgsURL}}/{{o.projID}}_1.jpg"
alt="{{p.title}}" class="img-responsive">
{% if forloop.counter|divisibleby:'4' == False and forloop.counter|divisibleby:'2' %}
<div class="clearfix visible-xs-block"></div>
{% endif %}{% if forloop.counter|divisibleby:'4' %}
<div class="clearfix visible-xs-block"></div>
{% endif %}

 4.專案詳細頁

  1.專案詳細頁使用DetailView,繫結的model是tb_projs。get_object()裡使用objects.get()來根據id過濾。get_context_data()直接返回context
  2.效果如下
專案詳細

相關推薦

django搭建個人部落11專案釋出展示

編寫專案展示頁 1.這是專案的資料模型 class tb_projs(models.Model): projID=models.AutoField(primary_key=True,verbose_name="作品ID") title

django搭建個人部落10文章詳細3-評論

完善article_detail_base.html 增加評論展示以及上下篇導航欄 1.修改ArticleDetailView原生SQL執行語句,增加’上一篇’和’下一篇’導航項 def

django搭建個人部落03編寫首頁

插入一些資料以便編寫html-templates from www.models import * from django.utils import timezone tag=tb_tags(name="隨筆01abc#[email protec

django搭建個人部落07編輯文章

實現編輯文章 使用ModelForm繫結tb_articles   1.vim www/forms.py from django.utils.translation import uget

Django搭建個人部落:使用者的刪除

這一章將實現刪除使用者資料的功能。 許可權與檢視 刪除使用者資料本身的邏輯並不複雜,但是會涉及到新的問題。 使用者資料是很多網站最重要的財產,確保使用者資料的安全是非常重要的。 前面學習的使用者登入、退出、建立都是相對安全的操作;而刪除資料就很危險,弄不好會造成不可逆的損失。因此我們希望對操作者做一些

Django搭建個人部落:使用者的註冊

既然有登入登出,那麼使用者的註冊肯定也是少不了的。 登錄檔單類 使用者註冊時會用到表單來提交賬號、密碼等資料,所以需要寫註冊用的表單/userprofile/forms.py: /userprofile/forms.py ... # 註冊使用者表單 class UserRegisterForm(fo

Django搭建個人部落:重置使用者密碼

隨著技術的發展,驗證使用者身份的手段越來越多,指紋、面容、聲紋應有盡有,但密碼依然是最重要的手段。 網際網路處處都有密碼的身影,甚至變成了現代人的一種負擔。像筆者這樣的,動輒幾十個賬號密碼,忘記其中幾個簡直太正常了。 本章講如何幫助健忘症患者,重置使用者密碼。 安裝第三方庫 前面我們已經知道如何修改文

Django搭建個人部落

最近學著用Django搭建了個個人部落格,目前域名正在備案中,現在把我這最近半個月的摸爬滾打經歷記錄下。 Django入門 第一階段:我首先看了Python核心程式設計中的Django章節,剛開始看的有些雲裡霧裡。於是我去菜鳥教程那裡按著Django

Django搭建個人部落:完成修改文章功能

目前為止我們已經完成了文章的新建、刪除以及檢視,還剩最後一項,即對已經完成的文章進行修改。 實際上修改文章與新建文章有點類似,不同的地方有兩點: 修改是在原有文章的基礎上,因此需要傳遞 id 指明具體需要修改的文章 載入頁面時需要將舊的內容作為預設值填寫到表單

使用Hexo搭建個人部落極速高效簡潔,新手小白可操作

目錄 只需要兩步 第一步程式碼部分: 第二部分放置程式碼 https://www.cnblogs.com/blogjun/articles/8289977.html 詳細操作可參考上文 這裡說一下大概的原理吧(純屬個人觀點,如有疑問請評論回去,接懟) 只需要兩步

使用 django-blog-zinnia 搭建個人部落

目前網上搭建個人部落格的方案很多,雖然使用諸如 Wordpress ( PHP )、Hexo ( Node.js ) 等可以方便快速地搭建一款功能齊全的高效能個人部落格,但是本文將嘗試一種更為小眾化的方案 —— 一款基於 django-blog-zinni

如何使用hugo搭建個人部落(二):修改主題:顏色字型佈局

上一篇博文中談到了如何在本地使用hugo預覽特定主題crisp,本文介紹主題的顏色,字型,佈局的修改。 修改主題側邊欄顏色 crisp主題的側邊欄預設是白色,如果想改個顏色咋辦? 到github倉庫 https://github.com/penn201

使用 jekyll + github pages 搭建個人部落

1. 新建 github.io 專案 其實 github pages 有兩個用途,大家可以在官方網頁看到。其中一個是作為個人/組織的主頁(每個賬號只能有一個),另一個是作為 github 專案的專案主頁(每個專案可以有一個)。 而 github pages 本身就支援 jekyll

記錄自己用python搭建個人部落系統的完整過程(一)

零、前言 本博文記錄搭建個人部落格系統的完整過程,網上有許多相關的教程,但是沒找到一個(適合自己能力的)快速搭建的完整教程。藉此篇博文梳理一下前不久學習到的有關整個過程前前後後的各種知識點。 一、搭建環境 採用架構:python3.6 + django1.10 + ngi

使用Hexo+Github搭建個人部落

個人部落格:             技術部落格:http://messi1002.top/             閱讀部落格:http://www.read1002.t

centos6.8使用WordPress搭建個人部落

一、搭建LNMP 1.安裝Nginx 安裝Nginx [[email protected] ~]# yum -y install nginx Loaded plugins: fastestmirror Setting up Install Process Determ

Hexo + github pages + 阿里雲繫結域名搭建個人部落

申請域名 萬網購買的域名,地址:https://wanwang.aliyun.com/domain/com?spm=5176.8142029.388261.137.LoKzy7 控制檯進行解析 控制檯->域名與網站(萬網)->域名->域名列表->解析 設定主機記錄www

docker實戰之使用mysql映象與wordpress映象搭建個人部落

這次我打算寫一個實戰教程,以前寫的教程大多數是根據自己掌握的知識去寫的,並非實戰,這次試一下吧 首先docker這個東西我強烈推薦學習,因為真的很好用 下面先開始吧,廢話不多說,基礎的連線伺服器這些我就不囉嗦了,自個去百度吧,貌似我部落格也有 首先,使用yum安裝docker,命令如下

github + hexo 搭建個人部落教程

Github Pages介紹 本來用於介紹託管在Github上上的專案,由於它的空間免費穩定,因此適合用來搭建部落格。 每個帳號只能有一個倉庫來存放個人主頁,且倉庫的名字必須是使用者名稱/ username.github.io。你可以通過http://username.github.io

GitHub、Node.js和Hexo搭建個人部落

GitHub、Node.js和Hexo搭建個人部落格 1.Git 1.1、下載 下載地址:https://git-scm.com/downloads 1.2、Git安裝 雙擊安裝,點選Next 填寫安裝路徑,點選Next 選中安裝內容,點選Next