Django--BBS项目

需求

模仿抽屉()和虎嗅()做一个网站bbs

知识点

Django知识:

  • models表字段第一个属性可以用 u"别名" 标明字段名称,效果同 verbose_name=‘别名‘;
  • 使用Django自带的用户认证表  from django.contrib.auth.models import User ,里面包含了username和password等,它是一对一的关系,即每个账户对应了自己的一个关联表;
  • 评论只是多一个parent字段,外键是"self",然后用递归函数取出;
  • models.create()方法只返回true or false ,save()方法能返回具体;
  • migrate只创建auth和Django表,不会创建自己的表;
  • 自关联ForeignKey("self")的时候,要加参数 related_name,而且名字不能和外键字段名称相同;因为反向查询的时候,Comment.parent_comment和Comment.comment会冲突。
  • blank=True,是Django-admin页面中可以为空,null=True,代表数据库中可以为空;
  • STATIC_URL= ‘/static/‘代表了遍历STATICFILES_DIRS中所有的目录,所以调用的时候就写/static/...;
  • urls映射表起别名,name=“别名”,前端调用:{% url ‘别名‘  %},url名称无论更改与否,都不会影响;
  • 上传文件小于2.5M会存储在内存,大于2.5M会创建临时文件;
  • 
    

前端知识:

  • request.path 获取用户请求url路径,不包括ip和端口
  • bootstrap,一行12格,外层div要有class=‘row’,里层div直接写占几格col-md-x;
  • models反向查询:通过谁关联我的表,可以取到table_set的一个集合,再通过select_related,将集合变成一个列表,从而可以计算数量;
  • 列表水平排列:<ul class="list-inline"><li>.....</ul>
  • 
    

    CSRF:<form>{% csrf_token %};view中必须用render返回;

  • bootstrap中使元素移到最右边:class=‘pull-right‘  ;
  • 文章后发布在前面,用reversed,{% for  article in articles reversed%}

ckeditor编辑器

  1. 发表文章正文使用
  2. 前端母版simpletag定义block head-js,子版引用block,调取ckeditor的js文件
  3. form中写一个textarea标签,id(js查找),name(提交后台)不可少;
  4. 前端母版simpletag定义block bottom-js,子版引用block,自写javascript;
  5. 只一行:CKEDITOR.replace(‘id‘);
  6. 还可自写配置: CKEDITOR.editorConfig = function(config){};   定义样式等等。
  7. 正文的格式带标签:{{ article_obj.content | safe }} 这样就解决了。

项目步骤

1、设计数据库

创建表:

用户表、用户组表、文章表、板块表、评论表、点赞表。

表中包括的字段:
  • 用户表:账户、真实姓名、用户属组
  • 用户组表:组名
  • 文章表:文章名、所属板块、标题图片、内容、作者、发布时间、是否隐藏、优先级
  • 板块表:板块名称、版主
  • 评论表:文章名、父评论、评论内容、评论时间
  • 点赞表:文章名、用户、点赞时间
初始化数据库

2、admin页面

  1. 将models表加入admin
  2. 后台中添加文章,评论等,跑通流程

3、前端页面

  1. Bootstrap页面index.html
  2. urls配置、views配置
  3. 用户登录后的dropdown下拉菜单,在前端用if判断,如果登录了就显示注销啥的,没登录就显示注册和登录按钮
  4. logout注销,urls,views,用Django原生logout函数
  5. 主页当成模板,其它板块页面(simple_tag母版继承、板块用动态id),所以综合区不能用动态id过滤;
  6. admin后台加入板块,并自定义显示信息;
  7. 各板块的标签active转换效果
  8. 综合板块前端页面index.html,(左右栏占比,文章栏)
  9. 每个文章的链接、文章页面、文章不存在异常处理、404页面;图片要等发布做完才能显示,因为这时数据库中的路径不能获取到;

4、登录

  1. 登录页面login.html
  2. 登录后右上角显示登录状态,登出

5、用户操作

  1. 发帖,右上角下拉菜单做一个发帖选项
  2. form表单验证合法性
  3. 数据库插入数据
  4. 发布成功显示什么,没有这个文章id就创建。。。
  5. 最新发布的文章置顶,用reverse查询
  6. 图片上传功能完善,img传到每个用户自己的目录里
  7. 分级评论

一些新知识

models:原生User表


1

2

3

from django.contrib.auth.models import User

class UserInfo(models.Model):

    username = models.OneToOneField(User)

admin:显示多个字段


1

2

3

class ArticleAdmin(admin.ModelAdmin):

    list_display = (‘id‘,‘title‘,‘author‘,‘hidden‘,‘publish_date‘)

admin.site.register(models.Article,ArticleAdmin)

显示‘账户名’或‘登录’按钮?:


1

2

3

4

5

{% if request.user.is_authenticated %}

    显示用户登录后的下拉列表

{% else %}

    显示登录信息

{% endif %}

板块按数字分页:


1

url(r‘^plate/(\d+)$‘, views.plate,name=‘plate‘)


1

2

3

def plate(request,plate_num):

    articles = models.Article.objects.filter(plate_id=plate_num)

    return render(request,‘index.html‘,{‘articles‘:articles})


1

<a href="{% url ‘plate‘ 2 %}">板块2</a>

标签切换高亮:


1

2

3

4

5

$(function(){

    var menus = $("#plate a[href=‘{{ request.path }}‘]")[0];

    $(menus).parent().addClass(‘active-blue‘);

    $(menus).parent().siblings().removeClass(‘active-blue‘);

});

文章详细页:


1

<a href="{% url ‘article‘ article.id %}">{{ article.title }}</a>


1

url(r‘^article/(\d+)$‘, views.article,name=‘article‘)


1

2

3

def article(request,article_id):

    article_obj = models.Article.objects.get(id=article_id)

    return render(request,‘article.html‘,{‘article_obj‘:article_obj})

详细

参考:day20课上代码或homework

来自为知笔记(Wiz)

时间: 2024-11-06 15:02:23

Django--BBS项目的相关文章

django框架之BBS项目之评论功能

内容回顾    1. BBS项目 CMS        1. 登录            1. form组件            2. auth模块            3. 验证码        2. 注册            1. form组件                1. 生成html代码                    直接for循环form_obj,就能够遍历所有字段                2. 验证                    1. 默认的那些验证

BBS项目-01

目录 BBS项目 BBS开发流程: BBS表格创建: BBS项目 BBS开发流程: BBS项目: 开发流程: 需求分析 草拟一些项目的大致技术点和流程 架构设计 架构师(框架 语言 数据库 缓存数据库 表设计 拆分功能 项目的报价 分组开发 任务 按模块功能分的 组长在拆分功能 每个组员写几个小功能 需要提前测试一下有没有bug 交互测试 运维上线 BBS表格创建: from django.db import models from django.contrib.auth.models impo

简单BBS项目

项目的基本要求: 掌握递归 掌握JavaScript+html+css+jsp+servlet初步应用 掌握分页写法 初步掌握前台/后台的概念 简单的功能需求: 1.能够树形展现 2.能够平板型展现 3.能够回复帖子 4.后台能够管理帖子,如:删除 <1.新建项目:右键new/project/Dynamic Web Project,项目名称为BBS,配置tomcat. <2.设计数据库的表:保留建表的语句到项目中,在项目new/folder然后引入bbs.sql: *****bbs.sql**

美化的bbs项目

跟着教程做两天的bbs项目,终于好了,做了点笔记上传上来,哈哈(这里已经成了我的备忘录笔记本了啊). 开发工具-----MyEclipse6.0:基于插件结构的开发工具,定义了许多接口.Eclipse默认只支持J2SE,lomboz-Eclipse和MyEclipse在Eclipse的基础上装了许多插件. 项目需要注理解的一些地方: <%String path=request.getContextPath(); //相当用于访问这个文件的路径,默认下也相当于文件名(如我们的第一个文件就是Test

无法使用Django新建项目:&#39;django-admin.py&#39;不是内部或外部命令

问题: 在命令行下无法使用django-admin.py startproject project命令去新建一个Web项目,反而去Django安装目录的bin目录下(例如:D:\Django-1.7\django\bin)使用python django-admin.py startproject project就可以了,每次都要跑到bin目录再用python命令很麻烦,于是找了下才知道是环境变量的问题. 参考:https://docs.djangoproject.com/en/1.5/faq/t

Django问卷调查项目思路流程:

Django问卷调查项目思路流程: 1 后端思路 : 需求分析 ---- 找出各实体对应关系 ---- 设计model架构 ---- 统一资源封装 --- 提供资源API入口 ---- 设计项目实体功能 --- 通过API实现实体功能 --- 统一数据结构测试功能 2 项目流程 3 找出各实体之间的对应关系 项目之间实体主要有: 4 根据实体关系与实体功能设计模型 ? 数据模型中包含实现实体功能的各种资源类,都是继承models.Model类,每个模型类的资源,关系键值决定了数据表的整体结构,因

nginx + uwsgi 部署 Django+Vue项目

nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用django第三方的wsgifef单机模块,性能很低 python3 manage.py runserver 0.0.0.0:8000 使用uwsgi 去启动django项目,支持并发更多 准备前后端代码 先从vue前端搞起 解决node环境 更改vue发送请求的接口地址, 这个vue发送的地址,应该是

django 本地项目部署uwsgi+nginx

一 .django 本地项目部署uwsgi 1 本地部署项目 uwsgi安装测试 通过uwsgi 进行简单部署 安装uwsgi命令:pip install uwsgi -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 提示:-i 后面使用是豆瓣加速源 2 测试uwsgi 是否安装成功 项目的根目录新建 uwsgi_test.py # 测试py文件# 测试代码# 启动 uwsgi --http :8001 --wsgi

Django小项目简单BBS论坛

开发一个简单的BBS论坛 项目需求: 1 整体参考"抽屉新热榜" + "虎嗅网" 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用户展示 6 允许登录用户发贴.评论.点赞 7 允许上传文件 8 帖子可被置顶 9 可进行多级评论 知识必备:(注:没有必备下面知识的同学,请返回去看会之后再看下面的内容防止蒙了~~!) 1 Django 2 HTML\CSS\JS 3 BootStrap 4 Jquery 设计表结构 1.表结构重要性 在开发

Django:之BBS项目

首先新建一个BBSProject项目,在建一个app,把app导入到项目中. 在项目BBSProject中的settings.py中, INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', '