django搭建个人博客11,项目发布展示
2017-06-20 02:28
591 查看
编写项目展示页
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/projImgs2.该页面提供一个相册效果,相片是各个项目的照片之一,下面是名字。
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.objects2.效果如下
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()直接返回context2.效果如下
相关文章推荐
- django搭建个人博客06,发布文章页
- 使用GitHub + Hexo搭建个人博客(四)- 第1个Hexo项目
- django项目部署到SAE上的个人博客
- SSM个人博客系统搭建【一】:项目概述
- 如何搭建个人网站(二)项目发布
- python Django 搭建简单的个人博客网站(一)
- 用 Django搭建博客项目
- 用Node.JS+MongoDB搭建个人博客(成品展示)
- wordpress+phpstudy+nat123快速学会搭建并发布个人博客网站
- 使用 django-blog-zinnia 搭建个人博客
- django入门--django-blog-zinnia搭建个人博客
- Hexo+github搭建个人博客-博客发布篇
- Django开发个人博客网站——3、使用pycharm创建博客项目
- Django开发个人博客网站——13、实现标签下所有博客的展示
- Django开发个人博客网站——15、通过markdown实现博客内容的展示
- python Django 搭建简单的个人博客网站(二)
- django搭建个人博客09,文章详细2-评论
- wordpress+nat123迅速学会搭建并发布个人博客网站
- django 第一个项目-学习搭建博客 (三、Django admin 管理后台)
- 自己的电脑+wordpress+nat123搭建并发布个人博客网站